# DirectSale AI — Official Platform Help Source: https://directsale.ai/help Content version: 9c253d0cf11816df; canonical language: en. This is the same public guide used by dashboard Help. Feature availability depends on plan, permissions, region and configuration. Consult current Billing/Pricing for prices; this guide does not quote live offers. --- Source: https://directsale.ai/help/getting-started/learning-directory # Complete Dashboard Learning Directory Use this directory to find the task-level guide for each area of DirectSale. Begin with the launch sequence, then open the relevant guide whenever you add a feature. Availability depends on your plan, role, currency region and authorized provider connections. A guide is not a promise that an unavailable feature is enabled for your account. The official articles are maintained centrally and shared by the dashboard Help Center, Smart Help and the public website. Smart Help explains the documented workflow; it cannot operate your account or inspect your customers, orders or private settings. ## First working launch 1. Follow the [Launch Checklist](https://directsale.ai/help/getting-started/launch-checklist), [Registration](https://directsale.ai/help/getting-started/registration) and [First Login](https://directsale.ai/help/getting-started/first-login). 2. Review [Navigation](https://directsale.ai/help/getting-started/navigation), [Dashboard](https://directsale.ai/help/dashboard/index) and [General Settings](https://directsale.ai/help/settings/general), including currency and language. 3. Prepare the catalog or services, business knowledge and one customer channel. 4. Configure payments only if you want to collect money through the supported checkout. 5. Test a complete authorized customer journey before expanding to more channels. 6. Use [Smart Help](https://directsale.ai/help/getting-started/smart-help), [Troubleshooting](https://directsale.ai/help/getting-started/troubleshooting) or [Support](https://directsale.ai/help/getting-started/support) when blocked. ## Customer assistant and conversations - [Chat Studio](https://directsale.ai/help/chat-studio/index) and [Settings Reference](https://directsale.ai/help/chat-studio/settings-reference): identity, tone, greetings, languages, product presentation, limits, voice, fallback and handoff. - [Business Profile](https://directsale.ai/help/chat-studio/business-profile): business introduction, distinct from storefront About text. - [Knowledge Base](https://directsale.ai/help/chat-studio/knowledge-base): maintain business articles, FAQs and policies. - [Auto Replies](https://directsale.ai/help/chat-studio/auto-replies): matching triggers, priorities and prepared answers. - [Conversations](https://directsale.ai/help/conversations/index), [Managing Conversations](https://directsale.ai/help/conversations/managing-conversations), [Messaging](https://directsale.ai/help/conversations/messaging) and [Lead Scoring](https://directsale.ai/help/conversations/lead-scoring): history, human participation and follow-up. ## Messaging platforms and website widget - [Messaging Channels](https://directsale.ai/help/channels/index) and [Connection Guide](https://directsale.ai/help/channels/connection-guide): authorization, tokens, end-to-end tests and reconnect diagnostics. - [Instagram Replies](https://directsale.ai/help/channels/instagram-replies): DMs, stories, Auto Replies before AI, public comments and partial delivery. - [Instagram Account Safety](https://directsale.ai/help/channels/instagram-account-safety): official authorization and the merchant's continuing responsibility. - [Widget](https://directsale.ai/help/widget/index): appearance, installation, authorized domains and customer-side testing. ## Product catalog - [Products](https://directsale.ai/help/products/index), [Adding](https://directsale.ai/help/products/adding-products), [Editing](https://directsale.ai/help/products/editing-products), [Categories](https://directsale.ai/help/products/categories) and [Variants](https://directsale.ai/help/products/variants). - [Import & Export](https://directsale.ai/help/products/import-export), [PDF Catalog Import](https://directsale.ai/help/products/catalog-pdf) and [Web Import](https://directsale.ai/help/products/web-import): choose the right source workflow and verify extracted records. - [Catalog Backup and Metadata Repair](https://directsale.ai/help/products/catalog-backup): export a product ZIP, inspect a replacement restore and review extracted-field conflicts. - [AI Content](https://directsale.ai/help/products/ai-content): individual and bulk generation, language, regeneration, stopping jobs, images and filling empty details. - [Product SEO + AI](https://directsale.ai/help/products/seo-ai): review keywords and URL, generate preview, then Save & apply. - [Product Settings](https://directsale.ai/help/products/settings), [Storefront Product Display](https://directsale.ai/help/products/storefront-display) and [Reviews](https://directsale.ai/help/products/reviews). ## Storefront, pages, blog and discoverability - [Social Media and Sharing](https://directsale.ai/help/storefront/social-media): public profiles, header/footer/mobile placement, linked visual blocks and product/article sharing. - [Storefront Overview](https://directsale.ai/help/storefront/index) and [Setup Wizard](https://directsale.ai/help/storefront/setup). - [Design](https://directsale.ai/help/storefront/design), [Homepage](https://directsale.ai/help/storefront/homepage), [Header & Footer](https://directsale.ai/help/storefront/header-footer) and [Visual Editor](https://directsale.ai/help/storefront/visual-editor). - [Section Templates](https://directsale.ai/help/storefront/section-templates): Save as template, Load copy, shared product links, category/store defaults and updating reusable layouts. - [Custom Pages](https://directsale.ai/help/storefront/pages), [Blog](https://directsale.ai/help/storefront/blog) and [Page/Blog SEO + AI](https://directsale.ai/help/storefront/content-seo-ai). Apply to an editor is not the final Save or Publish. - [SEO Settings](https://directsale.ai/help/storefront/seo), [Search Console](https://directsale.ai/help/storefront/search-console), [Storefront Analytics](https://directsale.ai/help/storefront/analytics) and [Integrations](https://directsale.ai/help/storefront/integrations). - [Domain & Private Preview](https://directsale.ai/help/storefront/domain): verified custom domain, SSL and explicit publication. - [Self-hosted Storefront](https://directsale.ai/help/storefront/self-hosted): coded installation progress, automatic publication, application updates/rollback, private backup/removal, monitoring and return to platform hosting. - [Self-hosted Email](https://directsale.ai/help/storefront/self-hosted-email): mailbox creation, one-time passwords, secure client settings and current DNS activation requirements. ## Receiving payments and managing orders - [Checkout & Gateways](https://directsale.ai/help/settings/checkout): hosted payment, supported regional gateways, Bale Pay and external cart sync. - [Orders](https://directsale.ai/help/orders/index), [Managing Orders](https://directsale.ai/help/orders/managing-orders) and [Fulfillment](https://directsale.ai/help/orders/fulfillment). - [Shipping Overview](https://directsale.ai/help/shipping/index), [Carriers](https://directsale.ai/help/shipping/carriers), [Rates & Rules](https://directsale.ai/help/shipping/rates-rules) and [Zones & Restrictions](https://directsale.ai/help/shipping/zones-restrictions). - [Coupons](https://directsale.ai/help/coupons/index), [Returns](https://directsale.ai/help/returns/index) and [Cart Recovery](https://directsale.ai/help/cart-recovery/index). Verify payment status before fulfillment. Returning from a payment app is not proof of successful settlement. Subscription payments to DirectSale are separate from payments collected from your customers. ## Services and appointments Read [Services](https://directsale.ai/help/services/index), [Creating Services](https://directsale.ai/help/services/creating-services), [Service Providers](https://directsale.ai/help/services/providers), [Schedules](https://directsale.ai/help/services/schedules), [Appointments](https://directsale.ai/help/services/appointments) and [Job Requests and Visits](https://directsale.ai/help/services/requests). Configure availability before accepting bookings and verify the customer-side result. ## External stores, marketplaces and linked tenants - [Multichannel Overview](https://directsale.ai/help/multichannel/index), [Connecting Channels](https://directsale.ai/help/multichannel/connecting-channels), [Marketplace Workspace](https://directsale.ai/help/multichannel/marketplace) and [Catalog Reconciliation](https://directsale.ai/help/multichannel/reconciliation). - [Selling Through Torob](https://directsale.ai/help/multichannel/torob): storefront readiness, Torob registration, product API, per-product inclusion and channel prices for eligible Iranian-currency stores. - [Listings](https://directsale.ai/help/multichannel/listings), [Synchronization](https://directsale.ai/help/multichannel/sync) and [Multichannel Analytics](https://directsale.ai/help/multichannel/analytics). - [Linked Stores](https://directsale.ai/help/multichannel/linked-stores): owner-approved hub/satellite invitations, all synchronization options, category mapping, pauses and disconnection. Linking tenants does not merge their logins, subscriptions, customer conversations or all settings. Agree field ownership before synchronizing live records. ## Accounting: setup and sales Start with [Accounting Overview](https://directsale.ai/help/accounting/index) and [Settings](https://directsale.ai/help/accounting/settings), then prepare [Contacts](https://directsale.ai/help/accounting/contacts), [Products](https://directsale.ai/help/accounting/products), [Payment Terms](https://directsale.ai/help/accounting/payment-terms) and [Tax Rates](https://directsale.ai/help/accounting/tax-rates). Use [Sales Invoices](https://directsale.ai/help/accounting/sales-invoices), [Purchase Invoices](https://directsale.ai/help/accounting/purchase-invoices), [Credit Notes](https://directsale.ai/help/accounting/credit-notes), [Debit Notes](https://directsale.ai/help/accounting/debit-notes) and [Recurring Invoices](https://directsale.ai/help/accounting/recurring-invoices). A recurring document schedule does not automatically charge a customer's bank. ## Accounting: money, stock and operations - [Treasury](https://directsale.ai/help/accounting/treasury), [Payment Instruments](https://directsale.ai/help/accounting/payment-instruments), [Bank Reconciliation](https://directsale.ai/help/accounting/bank-reconciliation) and [Expenses](https://directsale.ai/help/accounting/expenses). - [Inventory & Warehouses](https://directsale.ai/help/accounting/inventory): transfers, fulfillment, physical counts, lots and serial tracking. - [Operations](https://directsale.ai/help/accounting/operations): measurement units, installments, receipts/payments, opening balances, consignment and manufacturing. - [Chart of Accounts](https://directsale.ai/help/accounting/chart-of-accounts), [Journal Entries](https://directsale.ai/help/accounting/journal-entries) and [General Ledger](https://directsale.ai/help/accounting/general-ledger). Check document state and balances before retrying an uncertain posting, transfer or payment. Draft, approved, posted, applied, voided and reversed are not interchangeable. ## Accounting: reports and controls - [Financial Reports](https://directsale.ai/help/accounting/reports), [Financial Analysis](https://directsale.ai/help/accounting/financial-analysis), [Aging](https://directsale.ai/help/accounting/aging-report) and [VAT Returns](https://directsale.ai/help/accounting/vat-returns). - [Budgets](https://directsale.ai/help/accounting/budgets), [Exchange Rates](https://directsale.ai/help/accounting/exchange-rates) and [Sales Channels](https://directsale.ai/help/accounting/channels). - [Approvals](https://directsale.ai/help/accounting/approvals), [Periods](https://directsale.ai/help/accounting/periods), [Audit Log](https://directsale.ai/help/accounting/audit-log), [Discrepancies](https://directsale.ai/help/accounting/discrepancies) and [Data Export](https://directsale.ai/help/accounting/export). These tutorials explain software workflows, not country-specific accounting or filing advice. Verify reporting periods, data completeness and any external filing receipt with the responsible professional. ## Team, media, subscriptions and account care - [Team](https://directsale.ai/help/team/index), [Inviting Members](https://directsale.ai/help/team/inviting-members) and [Roles & Permissions](https://directsale.ai/help/team/roles-permissions). - [Media Library](https://directsale.ai/help/media-library/index), [Analytics](https://directsale.ai/help/analytics/index), [App Store](https://directsale.ai/help/app-store/index), [Installing Apps](https://directsale.ai/help/app-store/installing-apps) and [Bundles](https://directsale.ai/help/app-store/bundles). - [Billing & Usage](https://directsale.ai/help/billing/index): subscription choices, Trial status and allowance definitions. - [Settings](https://directsale.ai/help/settings/index), [Appearance & API Integrations](https://directsale.ai/help/settings/appearance-integrations), [Security](https://directsale.ai/help/settings/security), [Notification Preferences](https://directsale.ai/help/settings/notifications) and [Notification Center](https://directsale.ai/help/settings/notification-center). Appearance includes Standard/Simplified forms and their Advanced settings controls. - [Data Privacy](https://directsale.ai/help/settings/data-privacy) and [Backup & Restore](https://directsale.ai/help/settings/backup): export, deletion, backups and recovery. Do not send passwords, API keys, payment details or customer records to Smart Help. For a missing or outdated instruction, report the page name, action and sanitized error through Support so the central guide can be corrected. --- Source: https://directsale.ai/help/getting-started/platform-guide # DirectSale AI Platform Guide and Capabilities DirectSale AI is a web-based platform for managing AI-assisted customer conversations, a product catalog, an online storefront and day-to-day sales operations. A business manages its own workspace, content, connections and team from the tenant dashboard. It can use a sales chatbot on an existing website or messaging channel, build a storefront, or combine these workflows according to its subscription. This official platform guide is shared with the in-dashboard Help Center and Smart Help. It describes capabilities, not a promise that every feature is enabled in every account. Availability depends on subscription, permissions, tenant currency, connected provider and configuration. Consult Billing or the public Pricing section for current prices and exact allowances; this guide is not a price quote. ## Who the platform is for Retail businesses can use product facts, images, stock and prices to support buying conversations. Service businesses can describe services and, where enabled, manage appointments. Mixed businesses can combine products and services. Business Profile explains what the business actually offers so the assistant is not presented as a generic product shop when that does not fit. The platform does not replace a merchant's review of prices, claims, policies, generated content or customer orders. AI output can be wrong and should be checked before use. ## AI sales conversations and business knowledge Chat Studio configures the customer-facing assistant's business introduction, tone, response language, greeting, product presentation, voice and handoff behavior. Test real questions after saving. Product recommendations use the catalog and supported use cases; Knowledge Base supplies business guides, FAQs and policies. Auto Replies provides prepared responses for matching triggers. In supported AI response modes, matching Auto Replies are considered before generating an AI answer. Prepared sends do not consume AI-reply credits; stored-rule limits, provider restrictions, safety and rate controls are separate. Conversations provides customer conversation history and human takeover controls. The website widget and each messaging connection have their own setup requirements. Connecting a channel is not the same as publishing a storefront. ## Product catalog and AI content tools Products stores names, brands, categories, variants, prices, stock, images and descriptions. Imports and catalog extraction help prepare larger catalogs, but extracted information must be reviewed. Quick Product Info holds source facts and specifications for AI generation. The original description generator and the separate SEO + AI Beta workflow have different editing steps. The beta first proposes a keyword brief and localized URL, checks available SEO ownership and Search Console evidence, then generates content after approval. Save & apply writes the approved product preview. Existing URLs are preserved by this pilot to avoid silently changing live links. Bulk AI generation supports scope, output language, regeneration choices and Stop. Skipped, queued, completed and failed work are different. Generating content does not publish an imported draft or certify product facts. Supported product analysis can also fill empty brand, weight, package dimensions and Product Usage Notes. Existing values are preserved. Multiple documented weights use the largest value; package dimensions take precedence over product dimensions for shipping fields. ## Storefront, pages and blog The storefront builder provides setup, templates, homepage sections, navigation, product presentation, pages and blog content. Merchants can edit generated text and visual layouts. SEO settings, keyword tools and a Search Console connection support planning and performance review; they do not guarantee rankings or traffic. Storefront previews are private, temporary sessions opened from the dashboard. Public publishing requires the merchant's verified custom domain, active SSL and explicit publication. There is no permanent public tenant subdomain. Website publication, individual content publication and payment configuration are separate steps. ## Messaging and existing stores Messaging Channels includes connection workflows for supported platforms such as Telegram, WhatsApp, Instagram and LINE. Iranian channel setup, including Bale, Eitaa and Rubika, is offered for eligible IRR/IRT accounts. A card marked Coming Soon is not an active integration. Instagram can configure DMs, story replies and comments separately. Where enabled, public comment replies stay under the comment instead of being sent by DM. Private customer/order details and private commerce actions do not belong in public comment threads. DirectSale's platform team confirms that the Instagram integration received Meta approval after approximately 20 days of review. The connection uses official authorization and API permissions, not an unauthorized connection method. Account activity must still comply with Meta's rules; approval is not immunity from restrictions. See [Instagram account safety](https://directsale.ai/help/channels/instagram-account-safety). Multichannel tools connect supported external commerce systems and track synchronization. Linked-store and inventory workflows are separate from messaging bots. Verify supported operations, sync direction and field ownership before synchronizing a live catalog. ## Checkout, orders and operations Hosted Checkout lets customers pay using the merchant's configured payment methods. External Cart Sync can hand the purchase to a supported existing commerce store. Customer-payment gateways are separate from subscription payments to DirectSale. IRR/IRT tenant currency enables eligible Iranian payment choices; other supported currencies select international choices. Panel or chatbot language does not choose the payment region. A gateway still needs valid credentials and provider support. Bale Pay uses a dedicated payment bot and its connected wallet provider token. Orders, shipping, coupons, returns and cart recovery help manage sales where included in the account. Accounting provides its own records and reports. Review confirmed payment and order status before fulfillment; returning from a payment app alone is not proof of payment. ## Team, reporting and media Team roles control access to settings and operational sections. Media Library manages uploaded assets. Analytics and usage screens help monitor supported activity and allowances. Passwords and payment credentials belong only in authorized settings, never in a public article or Help question. ## Languages, currency and allowances The platform supports English, Persian, Arabic, Turkish, French, German, Spanish, Portuguese, Italian, Russian, Japanese, Korean, Chinese, Polish, Dutch, Hindi, Urdu and Hebrew for supported AI language settings. The central guide is currently authored in English; Smart Help can answer grounded questions in these languages when enabled. Tenant currency and dashboard display language are independent. An actual currency change resets business-language defaults: IRR/IRT uses Persian and RTL; USD/EUR/GBP uses English defaults. Manual language changes can follow, until the next actual currency change. Existing catalog text, amounts and financial records are not automatically translated or converted. Each plan price is configured independently in USD, EUR, GBP, IRR or IRT. No exchange-rate conversion is implied. Annual prices are total annual amounts. An unavailable currency price is not a free offer. 500 messages/mo means 500 AI-generated customer replies, not 500 incoming messages. STT minutes measure input speech converted to text; TTS minutes measure generated speech. Widget domains are authorized website domains, not purchased domains or visitor allowances. Other generation, storage and team limits depend on the plan. ## Help and getting started Use the [Complete Learning Directory](https://directsale.ai/help/getting-started/learning-directory) for task-level tutorials across the platform, including accounting operations, connected tenants, every major storefront workflow and account care. Follow the [launch checklist](https://directsale.ai/help/getting-started/launch-checklist) to prepare one working channel before enabling more. The [Smart Help guide](https://directsale.ai/help/getting-started/smart-help) explains language, privacy and availability. [Billing](https://directsale.ai/help/billing/index) explains allowances; [Checkout](https://directsale.ai/help/settings/checkout) covers receiving customer payments. Public Help provides the same official article text without requiring a login, together with a full-text version for reading and retrieval. Public availability does not guarantee that a search engine or AI assistant indexes, cites or learns the material. Consult the current linked article when an older generated answer conflicts with current behavior. --- Source: https://directsale.ai/help/getting-started/launch-checklist # Launch Checklist: What Should I Do First? Start with one working customer journey. You do not need every module to start using DirectSale. Use an account with the required permissions; a hidden or locked module may be unavailable to your role or plan. ## 1. Set your business basics Open Settings and confirm business name, currency and AI language. Read the confirmation before changing currency: it resets business-language defaults but does not convert prices or change panel language. Open Chat Studio > Business Profile, describe what you sell and who you help, save and check the result. ## 2. Add the information the assistant needs For products, add or import a sample with accurate names, prices, stock, images and Quick Product Info. Review extracted specifications. For services, configure services and availability where enabled. Add shipping, returns and common questions to Knowledge Base. Create Auto Replies for questions needing fixed wording. ## 3. Test a customer conversation Save Chat Studio settings, then ask about a product or service, an actual use case, shipping and an unavailable item. Test a customer language and human handoff. Check recommendations against your facts. AI generation and customer replies have distinct quotas; check Billing rather than assuming tests are free. ## 4. Choose your first customer-facing channel For an existing website, configure Widget and authorize the correct domain. For messaging, open Messaging Channels, connect a supported account and choose which message types receive replies. Send a real test from a customer account. A connection card is not proof that the platform is active or included in your plan. ## 5. Configure receiving customer payments Choose Hosted Checkout or External Cart Sync in Settings > Checkout. Connect your merchant gateway, configure shipping and verify currency. Check the full payment and order-status flow using the provider's supported test procedure. Do not place a live charge just to dismiss an error. DirectSale subscription billing is separate. ## 6. Build and publish a storefront if needed Run setup and review product selection, text, images, navigation and mobile layout in Preview. Connect your own root domain, complete DNS verification and SSL, then explicitly publish. A private preview is not a public store address. Check the published site in a private browser window. ## 7. Prepare operations Invite the team with appropriate roles, configure notifications and human support, then review Conversations, Orders and usage regularly. Expand the catalog and channels after the first journey works. ## When a step does not work Keep unsaved edits, read the exact error, check role and plan access and confirm the connection is active. Ask Smart Help a specific question such as “How do I reply under an Instagram comment instead of sending a DM?” Include the page name, not credentials or private customer data. Support can investigate account issues that the guide cannot diagnose. --- Source: https://directsale.ai/help/getting-started/smart-help # Using Smart Help and Help Articles Open Help inside your dashboard. Ask the assistant answers questions about using DirectSale; Help articles lets you browse the official guide. This assistant is separate from your customer-facing sales chatbot and your own Knowledge Base. ## Ask a useful question Ask one practical question and include the visible feature name: “How do I connect Instagram?”, “Why does a product draft not appear in Generate All?” or “What does 500 messages/mo mean?” Follow official source links and verify settings on the linked page. Explicitly request a language or ask clearly in that language. Panel language does not force the response language. The source articles are currently English; Smart Help can retrieve them and explain steps in a supported response language. ## What Smart Help cannot do It cannot change settings, inspect private customer orders, perform refunds, connect accounts or publish websites. It does not know that a payment completed simply because you say so. Where available, plan answers use current permitted Billing information rather than old article examples. Do not send passwords, API keys, payment details or customer personal data. Questions go to the platform's configured AI provider. Conversations are private to the signed-in tenant/user and expire after one hour of inactivity. New conversation starts fresh; closing Help clears the visible chat but does not cancel an AI request already sent. ## Availability and limits Smart Help must be enabled for your account and needs an available provider. It intentionally does not operate through administrator Login as: sign in with your own tenant account. Account eligibility and hourly/daily limits can affect availability. Smart Help does not deduct customer AI-reply credits. Independent request limits still apply, including admitted attempts that later fail. When unavailable, use Help articles or Contact support; changing your sales-chatbot provider does not enable Smart Help. ## Search the articles Article search supports English text and curated feature-name aliases in all supported platform languages. It is not an unrestricted translation engine. For a full question that does not match, use Smart Help when available or browse the relevant category. ## Where the guide comes from One official guide supplies dashboard Help, Smart Help and the public Help website. Updating it does not overwrite tenant-created Knowledge Base items. Changes appear with the deployed version; the shared Smart Help index processes changed sections automatically when enabled. --- Source: https://directsale.ai/help/getting-started/overview # Platform Overview DirectSale is a comprehensive, AI-powered e-commerce and business management platform designed for businesses of all sizes, anywhere in the world. It brings together online selling, customer engagement, team collaboration, accounting, and AI-driven automation into a single, unified dashboard. ## What is DirectSale? DirectSale is an all-in-one SaaS platform that empowers you to run your entire online business from one place. Whether you are a solo entrepreneur launching your first store or an established company managing a large product catalog across multiple sales channels, the platform provides the tools you need to sell, communicate, and grow. ### Key Capabilities | Capability | Description | |---|---| | **Online Storefront** | Launch a fully customizable storefront with your own domain, complete with SEO, analytics, and page builder tools. | | **Product Management** | Add products individually or import them in bulk. AI can automatically generate descriptions and product images for you. | | **Order Management** | Track orders from placement to delivery, manage returns, and recover abandoned carts. | | **AI Chatbot** | An intelligent sales assistant chatbot that understands your product catalog and helps customers find what they need. | | **Live Chat & Conversations** | View all customer conversations, take over from the AI when needed, and provide human support. | | **Multichannel Selling** | Connect your store to multiple platforms and marketplaces to sell wherever your customers are. | | **Chat Channels** | Connect messaging platforms like Telegram, WhatsApp, Line, and more to receive customer messages in one inbox. | | **Team Management** | Invite team members with role-based access control so everyone sees only what they need. | | **Accounting** | A full-featured accounting module with invoicing, chart of accounts, budgets, tax rates, and treasury management. | | **Services & Appointments** | Offer service-based products and let customers book appointments directly. | | **Shipping** | Configure shipping rules, carriers, and rates for your deliveries. | | **Coupons & Discounts** | Create promotional campaigns with discount codes. | | **Analytics** | Detailed reports on conversations, revenue, products, and customer behavior. | | **App Store** | Extend your platform's functionality with apps and integrations. | | **Chat Widget** | Embed an AI-powered chat widget on any website with a simple code snippet. | | **Media Library** | Centralized management for all your images and media files. | ## Core Concepts Before diving into the platform, it helps to understand a few key concepts. ### Tenants (Your Store Account) When you register, a **tenant** is created for you. A tenant represents your entire business on the platform. Everything -- products, orders, conversations, team members, settings -- belongs to your tenant and is completely isolated from other businesses on the platform. ### Team Members & Roles You, as the person who registered, are the **owner** of the tenant. You can invite other people to join your team and assign them specific roles that control what they can see and do: | Role | Description | |---|---| | **Owner** | Full access to everything. Cannot be removed. | | **Admin** | Full access to everything, similar to the owner. | | **Manager** | Access to most operational features: products, orders, analytics, storefront, accounting, and more. Cannot manage billing or deployment. | | **Accountant** | Access limited to the dashboard overview, accounting module, and multichannel features. | | **Operator** | Access to conversations, orders, media, shipping, appointments, accounting, and multichannel. Designed for customer support staff. | | **Viewer** | Read-only access to conversations, analytics, media, and account overview. Ideal for stakeholders who need visibility without editing capabilities. | ### AI-Powered Features DirectSale leverages AI throughout the platform: - **Product Descriptions**: Automatically generate compelling, SEO-friendly product descriptions from basic product data. - **Product Images**: AI can generate professional product images with customizable background styles. - **Chatbot**: The AI chatbot uses your product catalog as a knowledge base to answer customer questions, recommend products, and assist with purchases. - **RAG (Retrieval-Augmented Generation)**: Products are processed and embedded so the AI can intelligently search and retrieve relevant products during conversations. - **Intent Classification**: The AI understands customer intent (greeting, product search, complex questions) and responds appropriately. ### Subscription Plans Your tenant operates under a subscription plan that determines: - The number of AI messages you can send per month (your **message quota**) - The maximum number of team members you can invite - Access to advanced features You can view your current plan and usage on the dashboard home page. ### Multi-Language Support The dashboard interface is available in 18 languages: | Language | Code | |---|---| | English | `en` | | Persian (Farsi) | `fa` | | Arabic | `ar` | | Turkish | `tr` | | Spanish | `es` | | Chinese | `zh` | | Hindi | `hi` | | French | `fr` | | Portuguese | `pt` | | Russian | `ru` | | Japanese | `ja` | | German | `de` | | Korean | `ko` | | Italian | `it` | | Polish | `pl` | | Dutch | `nl` | | Urdu | `ur` | | Hebrew | `he` | You can switch languages at any time from the sidebar. The dashboard also supports right-to-left (RTL) layouts for Persian, Arabic, Urdu, and Hebrew. ### Dark Mode The entire dashboard supports both light and dark themes. You can toggle between them using the theme button in the sidebar footer. ## What You Can Do Here is a quick overview of the typical workflow after setting up your account: 1. **Register and verify your email** -- Create your store account and confirm your email address. 2. **Add products** -- Upload your product catalog manually, via CSV import, or by scraping from other sources. 3. **Let AI process your catalog** -- The platform automatically processes your products for the AI chatbot. You can also generate AI descriptions and images. 4. **Set up your storefront** -- Customize your online store with themes, homepage sections, header, footer, and SEO settings. 5. **Deploy your storefront** -- Connect your custom domain and go live. 6. **Configure the chat widget** -- Generate an API key and embed the chat widget on your website. 7. **Connect chat channels** -- Link Telegram, WhatsApp, or other messaging platforms to receive messages in your dashboard. 8. **Monitor conversations** -- Watch how the AI interacts with your customers and step in when needed. 9. **Manage orders** -- Process orders that come in from your storefront and other channels. 10. **Invite your team** -- Add team members and assign appropriate roles. 11. **Track performance** -- Use analytics to understand your business metrics and optimize. > **Info:** You do not need to complete all of these steps at once. You can start with just adding products and embedding the chat widget, then gradually explore the other features as your business grows. ## Next Steps Ready to get started? Head to the [Registration & Setup](https://directsale.ai/help/getting-started/registration) guide to create your account. --- Source: https://directsale.ai/help/getting-started/registration # Registration & Setup This guide walks you through creating your DirectSale account, verifying your email, and completing the initial setup so you can start using the platform. ## Creating Your Account To register a new account, navigate to the registration page at `/register`. ### Registration Form Fields The registration form requires the following information: | Field | Description | Requirements | |---|---|---| | **Store Name** | The name of your business or store. This will be displayed throughout the dashboard and can be changed later in settings. | Required. Any text value. | | **Email** | Your business email address. This will be used for login, notifications, and email verification. | Required. Must be a valid email format. | | **Mobile number** | A private owner contact for future email and password recovery. | Required. Include your country calling code, for example `+44 7400 123456`. | | **Password** | Your account password. | Required. Minimum 8 characters. | | **Confirm Password** | Re-enter your password to prevent typos. | Required. Must match the password field exactly. | ### Step-by-Step Registration 1. Navigate to the registration page (`/register`). 2. Enter your **Store Name** in the first field. This is the name customers and team members will see. Choose something that represents your business. 3. Enter your **Email** address. Use an email you have access to, as you will need to verify it. 4. Enter your **Mobile number**, including the country calling code. Spaces and local-script decimal digits are accepted; the number is saved in international format. 5. Enter a **Password** with at least 8 characters. Use a combination of letters, numbers, and symbols for better security. 6. Re-enter your password in the **Confirm Password** field. 7. Click the **Sign Up** button. > **Info:** Your mobile number is collected for future email and password recovery. Mobile verification and recovery through this number are not available yet. The number remains unverified, and no mobile verification code is sent. Platform administrators can see it below your email in the Stores list; it is not your public storefront contact number. > **Info:** If you were directed to registration from a pricing page, your selected plan is retained and you continue to Billing after signup. Selecting a paid plan does not grant its access before checkout is completed. ### What Happens After Registration When you click Sign Up, the following happens behind the scenes: 1. Your account (tenant) is created on the platform. 2. Access tokens are generated and stored in your browser. 3. You are automatically logged in and redirected to the dashboard. 4. A verification email is sent to the email address you provided. > **Warning:** After registration, your account is created but your email is **not yet verified**. Some features may be restricted until you complete email verification. Check your inbox (and spam/junk folder) for the verification email. ## Email Verification After registering, you will receive an email containing a verification link. Clicking this link confirms that you own the email address associated with your account. ### How to Verify Your Email 1. Open the email from DirectSale in your inbox. Check your spam or junk folder if you do not see it. 2. Click the **verification link** in the email. 3. You will be taken to the verification page (`/verify-email?token=...`). 4. The page will show a loading spinner while it processes your verification. 5. On success, you will see a green checkmark and a confirmation message: **"Email Verified"**. 6. You will be automatically redirected to the login page after 3 seconds. ### Verification Statuses | Status | What You See | What to Do | |---|---|---| | **Loading** | A spinning loader with "Verifying email..." | Wait for the process to complete. | | **Success** | A green checkmark with "Email Verified" | You will be redirected to login automatically. | | **Error** | A red X with "Verification Failed" | The link may be expired or invalid. Click "Go to Login" and request a new verification email. | > **Warning:** Verification links expire after a set period. If your link has expired, log in to your account and look for an option to resend the verification email from the settings page. ## Signing In with Social Accounts In addition to email/password registration, DirectSale supports social login for faster onboarding. ### Available Social Login Options | Provider | Button | Description | |---|---|---| | **Facebook** | Blue "Continue with Facebook" button | Uses your Facebook account for authentication. | | **Google** | White "Continue with Google" button | Uses your Google account for authentication. | Social login buttons appear on the **login page** (`/login`). If you registered with email and password but want to link a social account later, you can do so from your account settings. > **Info:** Social login creates an account automatically if one does not exist for the associated email address. If an account already exists with that email, the social login will be linked to the existing account. New accounts created with Google or Facebook must complete the mobile number form before continuing in the dashboard. Saving the number returns you to your intended dashboard page. Existing accounts and invited team members are not required to add a mobile number in this release. ## Two-Factor Authentication (2FA) For enhanced security, DirectSale supports two-factor authentication. When 2FA is enabled on your account, the login process requires an additional verification step. ### 2FA Methods | Method | Description | |---|---| | **TOTP (Authenticator App)** | Use an authenticator app like Google Authenticator, Authy, or 1Password to generate time-based codes. | | **Email OTP** | Receive a one-time code via email. | ### Logging In with 2FA 1. Enter your email and password on the login page and click **Sign In**. 2. If 2FA is enabled, you will see a security screen with a shield icon and the title **"Two-Factor Authentication"**. 3. Enter the 6-digit code from your authenticator app or email. 4. Optionally, check **"Trust this device"** to skip 2FA on this device for future logins. 5. Click **Verify**. If you have both TOTP and email methods enabled, you can switch between them by clicking the **"Try another method"** link below the verify button. > **Info:** You can enable or configure 2FA from the **Settings > Security** tab in your dashboard after logging in. See the [Settings documentation](https://directsale.ai/help/settings/index) for details. ## Accepting a Team Invitation If you have been invited to join an existing store on DirectSale, you will receive an invitation email with a unique link instead of going through the standard registration process. ### How to Accept an Invitation 1. Open the invitation email and click the **invitation link**. 2. You will be taken to the "Join the Team" page (`/auth/accept-invitation?token=...`). 3. The page will display: - The **store name** you have been invited to - The **role** assigned to you (e.g., Admin, Manager, Operator, Viewer) - Your **email** (pre-filled and cannot be changed) 4. Fill in the following fields: | Field | Description | Requirements | |---|---|---| | **Display Name** | The name your team will see when you perform actions in the dashboard. | Optional. Pre-filled from the invitation if set. | | **Password** | Choose a password for your account. | Required. Minimum 8 characters. | | **Confirm Password** | Re-enter your password. | Required. Must match. | 5. Click **"Accept & Create Account"**. 6. On success, you will see a welcome screen with a green checkmark, and you will be automatically redirected to the dashboard within 1.5 seconds. ### Invitation Errors | Error | Meaning | |---|---| | **"Invalid Invitation"** | The invitation link is malformed or missing. Contact your team admin. | | **"Invalid or Expired Invitation"** | The invitation has expired or has already been used. Ask your admin to send a new one. | | **"Passwords do not match"** | The password and confirm password fields do not match. | | **"Password must be at least 8 characters"** | Your password is too short. | ## Resetting Your Password If you can sign in and know your current password, open **Settings > Security** to change it. If you cannot sign in, contact platform support for account-access assistance. Self-service recovery using your mobile number is not available yet; collecting the number does not enable email changes or password resets. ### Password Requirements - Minimum length: **8 characters** - The password and confirm password fields must match exactly - There is a toggle button (eye icon) to show or hide the password while typing ## Troubleshooting Registration Issues | Problem | Solution | |---|---| | "Passwords do not match" error | Make sure both the password and confirm password fields contain the exact same text. | | "Password must be at least 8 characters" | Choose a longer password. | | Invalid mobile number | Include the international country calling code, followed by your full number. Do not enter an extension. | | "Registration failed" error | This could be due to a duplicate email (an account with this email already exists) or a server issue. Try a different email or try again later. | | No verification email received | Check your spam/junk folder. Make sure the email address you entered is correct. Try requesting the verification email again from your settings. | | Verification link expired | Log in to your account and request a new verification email from settings. | | Social login not working | Ensure pop-ups are not blocked in your browser. Try a different browser if the issue persists. | ## Next Steps Once you have registered and verified your email, proceed to [Your First Login](https://directsale.ai/help/getting-started/first-login) to learn what to expect when you first access the dashboard. --- Source: https://directsale.ai/help/getting-started/first-login # Your First Login This guide explains what you will see when you first log in to DirectSale, how the dashboard is structured, and the essential configuration steps to get your store up and running. ## Logging In To access your dashboard, navigate to the login page (`/login`). ### Login Methods You have three ways to sign in: 1. **Facebook** -- Click the blue "Continue with Facebook" button at the top. 2. **Google** -- Click the "Continue with Google" button. 3. **Email and Password** -- Enter your email and password in the form below the social login buttons, then click **Sign In**. ### Login Form Fields | Field | Description | |---|---| | **Email** | The email address you used during registration. | | **Password** | Your account password. | After entering your credentials and clicking Sign In, you will be redirected to the main dashboard page. > **Info:** If you do not have an account yet, click the **"Sign up"** link at the bottom of the login form to go to the registration page. ## What You See on First Login When you first log in, the dashboard loads with the following layout: ### 1. Loading Screen A brief loading spinner appears while the platform verifies your authentication and fetches your account data. This typically takes only a second or two. ### 2. Dashboard Layout Once loaded, the dashboard is composed of three main areas: | Area | Location | Description | |---|---|---| | **Sidebar** | Left side of the screen | Navigation menu with all platform sections. Shows your store name, role, and navigation links. | | **Top Bar** | Top right corner | Contains the notification bell for alerts and updates. | | **Main Content Area** | Center of the screen | Displays the content of the currently selected page. On first login, this shows the Dashboard overview. | ### 3. Dashboard Home Page The first page you see is the **Dashboard Overview**. It includes: - A **welcome greeting** with your store name (e.g., "Hello, My Store!") - A subtitle describing the page purpose - **Four statistics cards** showing key metrics - **Three quick action cards** for common tasks We will cover the Dashboard page in detail in the [Dashboard Overview](https://directsale.ai/help/dashboard/index) section. ## Initial Configuration Checklist After your first login, we recommend completing these steps to set up your store. You do not need to do them all at once, but completing them will help you get the most out of the platform. ### Step 1: Verify Your Email If you have not already verified your email address, do so now. Some features are restricted for unverified accounts. 1. Check your email inbox for the verification email from DirectSale. 2. Click the verification link. 3. Return to the dashboard. ### Step 2: Configure Your Store Settings Navigate to **Account** (Settings) in the sidebar. The Settings page has multiple tabs: | Tab | What to Configure | |---|---| | **General** | Update your store name, contact information, business description, and branding. | | **Security** | Change your password and set up two-factor authentication (2FA) for added security. | | **Notifications** | Configure how and when you receive notifications (email alerts, in-app notifications). | | **Integrations** | Connect external services and configure API integrations. | | **Checkout** | Set up payment methods and checkout flow for your storefront. | | **Data & Privacy** | Manage data export, privacy settings, and GDPR-related configurations. | | **Backup & Restore** | Create backups of your data and restore from previous backups. | > **Info:** At minimum, review the **General** tab to ensure your store name and contact information are correct. These details appear in customer-facing areas like your storefront and chatbot. ### Step 3: Add Your Products Your AI chatbot and storefront need products to work with. You have several options: 1. **Add products manually** -- Click **"Upload Products"** on the dashboard quick action card, or go to **Products** in the sidebar and click **"Add Product"**. 2. **Import from a file** -- Go to **Products > Import** to upload a CSV or Excel file with your product data. 3. **Scrape from a website** -- Use the Scraper tool to import products from an existing website. ### Step 4: Generate AI Content After adding products, the platform automatically begins processing them for the AI chatbot (embedding and indexing). You can also: 1. Go to the **Products** page. 2. Look for the **AI Content** card near the top. 3. Check the boxes for **Descriptions** and/or **Images**. 4. Click **"Generate All"** to have the AI create product descriptions and images. ### Step 5: Set Up the Chat Widget To enable the AI chatbot on your website: 1. Navigate to **Widget** in the sidebar. 2. Click **"Generate API Key"** to create your API key. 3. Copy the **embed code** provided at the bottom of the page. 4. Paste the embed code into your website's HTML, just before the closing `` tag. ### Step 6: Configure Your Storefront (Optional) If you want to launch an online store: 1. Navigate to **Storefront** in the sidebar. 2. Complete the **Setup** wizard to configure your store basics. 3. Use the **Homepage** builder to arrange sections (hero, featured products, categories, etc.). 4. Customize the **Header** and **Footer**. 5. Configure **SEO** settings for search engine optimization. 6. Go to **Deploy** to connect your domain and publish. ### Step 7: Invite Your Team (Optional) If you work with a team: 1. Navigate to **Team** in the sidebar (visible to owners and admins only). 2. Click **"Invite Member"**. 3. Enter the team member's email, name, and assign a role. 4. The team member will receive an invitation email to set up their account. > **Warning:** The number of team members you can invite depends on your subscription plan. You will see your current usage (e.g., "2 / 5 members") on the Team page header. ## Understanding Your Account State After logging in, the platform stores the following information about your session: | Property | Description | |---|---| | **Store Name** | Your business name, displayed in the sidebar and greeting. | | **Email** | Your login email address. | | **Subscription Plan** | Your current plan (e.g., "Starter", "Professional"). | | **Role** | Your role in the team (Owner, Admin, Manager, etc.). Determines what you can see and do. | | **Display Name** | Your name as shown to team members (relevant for team member accounts). | | **Active Chatbot Version** | The version of the AI chatbot engine your store is using. | If you are logged in as a **team member** (not the owner), the sidebar will display your display name and role beneath the store name. ## Authentication Details ### Session Duration | Token | Duration | Purpose | |---|---|---| | **Access Token** | 15 minutes to 1 day | Used for authenticating API requests. Refreshed automatically. | | **Refresh Token** | 7 days | Used to obtain a new access token without re-entering credentials. | Your session will persist across browser sessions as long as the refresh token has not expired. If your session expires, you will be automatically redirected to the login page. ### Automatic Redirects - If you try to access any dashboard page without being logged in, you will be redirected to `/login`. - If you access the login page while already logged in, you will stay on the login page (your tokens will be validated on the next dashboard page visit). ## Notification Bell In the top-right corner of every dashboard page, you will see a **notification bell icon**. This bell: - Shows a **badge with the count** of unread notifications. - Clicking it opens a **dropdown panel** listing recent notifications. - Notification types include: - **Low stock alerts** -- A product is running low on inventory. - **New orders** -- A new order has been placed. - **Sync errors** -- An integration or connection has encountered an error. - **Webhook errors** -- A webhook delivery has failed. - **New reviews** -- A customer has left a product review. Each notification shows its type, severity (info, warning, error), title, and message. You can click on a notification to navigate to the relevant page. ## Dark Mode If you prefer a darker interface, you can switch to dark mode: 1. Look at the bottom of the sidebar. 2. Click the **moon icon** (or sun icon if already in dark mode) to toggle the theme. 3. The change takes effect immediately across all pages. ## Language Selection To change the dashboard language: 1. Click the **globe icon** at the bottom of the sidebar. 2. A popup menu will appear listing all available languages. 3. Click your preferred language. 4. The page will reload with the new language applied. > **Info:** Your language preference is saved in a browser cookie and will persist across sessions. The interface supports 18 languages, including right-to-left (RTL) layouts for Persian, Arabic, Urdu, and Hebrew. ## Next Steps Now that you are logged in and have an overview of the initial setup, learn how to navigate the dashboard effectively in [Navigating the Dashboard](https://directsale.ai/help/getting-started/navigation). --- Source: https://directsale.ai/help/getting-started/navigation # Navigating the Dashboard The DirectSale dashboard uses a sidebar navigation pattern that gives you quick access to every section of the platform. This guide explains each part of the sidebar, what every menu item does, and how role-based access controls what you see. ## Sidebar Overview The sidebar offers **Classic** and **New Panel** navigation. New Panel regroups the same destinations into Sales, Catalog, Customer Care, Online Store and workspace areas. Switching menus does not grant new permissions or change your catalog. Dashboard appearance and Standard/Simplified forms are separate choices under [Settings > Appearance](https://directsale.ai/help/settings/appearance-integrations). The sidebar is a fixed panel on the left side of the screen (or the right side for RTL languages like Arabic and Persian). It contains: 1. **Header** -- The brand name and collapse toggle button. 2. **Store Info** -- Your store name and role (when expanded). 3. **Navigation Menu** -- All the main sections of the platform, organized into groups separated by dividers. 4. **Footer** -- Language selector, theme toggle, and logout button. The footer also provides **Help** for the central guide. Use [Complete Learning Directory](https://directsale.ai/help/getting-started/learning-directory) to find task guides and [Smart Help](https://directsale.ai/help/getting-started/smart-help) for grounded assistance when enabled for your tenant. ### Collapsing the Sidebar The sidebar can be **collapsed** to save screen space: - Click the **chevron button** in the sidebar header to toggle between expanded and collapsed states. - When **expanded** (default), the sidebar is 256px wide and shows icons with text labels. - When **collapsed**, the sidebar shrinks to 64px and shows only icons. Hover over an icon to see a tooltip with the menu item name. ## Store Information Panel Below the sidebar header, when the sidebar is expanded, you will see a panel showing: | Element | Description | |---|---| | **"Dashboard" label** | A small text label indicating you are in the dashboard area. | | **Store Name** | Your business name, displayed in bold. Long names are truncated with an ellipsis. | | **Team Member Info** | If you are logged in as a team member (not the owner), your display name and role are shown below the store name in blue text (e.g., "Sarah Johnson (manager)"). | This panel is hidden when the sidebar is collapsed. ## Navigation Menu Items The navigation menu is divided into three sections, separated by horizontal dividers. Each item has an icon and a text label. ### Section 1: Overview | Menu Item | Icon | Path | Description | |---|---|---|---| | **Dashboard** | Grid layout icon | `/dashboard` | The main overview page with stats cards and quick actions. Your starting point after login. | | **Analytics** | Bar chart icon | `/dashboard/analytics` | Detailed analytics and reporting. View conversation trends, message statistics, hourly activity patterns, top products, revenue data, and platform breakdowns. | ### Section 2: Commerce & Operations | Menu Item | Icon | Path | Description | |---|---|---|---| | **Products** | Package icon | `/dashboard/products` | Manage your product catalog. Add, edit, delete, import, and export products. Generate AI descriptions and images. View processing pipeline status. | | **Media** | Image icon | `/dashboard/media` | Upload and manage images and other media files used across your store. | | **Orders** | Shopping cart icon | `/dashboard/orders` | View and manage customer orders. Filter by status, date, and payment state. Track order lifecycle from placement to delivery. | | **Returns** | Rotate icon | `/dashboard/returns` | Handle product return requests and process refunds. | | **Coupons** | Ticket icon | `/dashboard/coupons` | Create and manage discount codes and promotional campaigns. | | **Cart Recovery** | Refresh icon | `/dashboard/cart-recovery` | View abandoned carts and set up automated recovery campaigns to bring customers back. | | **Shipping** | Truck icon | `/dashboard/shipping` | Configure shipping rules, carriers, zones, and rates for your deliveries. | | **Services** | Briefcase icon | `/dashboard/services` | Create and manage service-based offerings (e.g., consultations, repairs). | | **Appointments** | Calendar icon | `/dashboard/appointments` | View and manage appointment bookings from customers who book your services. | | **Integrations** | Link icon | `/dashboard/connections` | Connect external platforms and services. Sync products, orders, and data with third-party systems. | | **Multichannel** | Layers icon | `/dashboard/multichannel` | Manage your presence across multiple sales channels and marketplaces. | ### Section 3: Communication & Configuration | Menu Item | Icon | Path | Description | |---|---|---|---| | **Conversations** | Message icon | `/dashboard/conversations` | View all customer chat sessions across all channels. Read messages, take over from the AI, and respond directly. | | **Channels** | Send icon | `/dashboard/channels` | Connect customer messaging platforms and check reply settings. | | **Chat Studio** | Sparkles icon | `/dashboard/chat-studio` | Configure assistant identity, languages, voice, product presentation and handoff. | | **Knowledge Base** | Document icon | `/dashboard/knowledge-base` | Maintain your business articles, FAQs and policies. | | **Auto Replies** | Message icon | `/dashboard/auto-replies` | Configure prepared replies and their matching rules. | | **App Store** | Puzzle piece icon | `/dashboard/app-store` | Browse and install apps and extensions that add new functionality to your platform. | | **Storefront** | Store icon | `/dashboard/storefront` | Build and customize your online store. Configure the homepage, header, footer, pages, SEO, and analytics. | | **Deploy** | Server icon | `/dashboard/deploy` | Deploy your storefront to production. Connect custom domains and manage your live site. | | **Accounting** | Pie chart icon | `/dashboard/accounting` | Full accounting module with chart of accounts, invoices, contacts, tax rates, payment terms, budgets, treasury, and inventory tracking. | | **Widget** | Code icon | `/dashboard/widget` | Configure the embeddable AI chat widget. Generate API keys, customize appearance, set allowed domains, and get the installation code. | | **Account** | Settings gear icon | `/dashboard/usage` | View your account usage, subscription details, and billing information. | | **Settings** | Settings icon | `/dashboard/settings` | General, appearance/forms, security, notifications, checkout and backups. | | **Billing / Team / Support** | Workspace controls | `/dashboard/billing`, `/dashboard/team`, `/dashboard/support` | Manage subscriptions, staff access and support requests where authorized. | | **Notifications** | Bell icon | `/dashboard/notifications` | Inspect notification history and recipient settings. | ## Active State The currently active menu item is highlighted with a **blue background and white text** (in both light and dark modes). A menu item is considered active when: - The current page URL exactly matches the menu item's path, OR - The current page URL starts with the menu item's path followed by a `/` (for sub-pages). For example, if you are on `/dashboard/products/add`, the **Products** menu item will be highlighted. ## Pending Reviews Indicator The **Products** menu item has a special indicator. When there are pending product reviews awaiting moderation, a small **yellow star icon** appears on the Products menu item. This badge updates automatically every 30 seconds so you always know when reviews need attention. ## Role-Based Menu Visibility Not all team members see the same menu items. The items visible to each role are determined by the role-based access system. This ensures team members only see sections relevant to their responsibilities. ### Full Access Roles | Role | Visible Items | |---|---| | **Owner** | All menu destinations, subject to enabled modules and operation-specific permissions | | **Admin** | All menu destinations, subject to enabled modules and operation-specific permissions | ### Restricted Roles #### Manager Managers have access to most operational destinations, including Deploy. Visibility does not authorize owner-only actions such as linking tenants: | Visible Items | |---| | Dashboard, Analytics, Products, Media, Orders, Returns, Coupons, Cart Recovery, Shipping, Services, Appointments, Channels, Integrations, Marketplace, Multichannel, Conversations, Knowledge Base, Auto Replies, Chat Studio, App Store, Storefront Content, Reviews, Blog, Storefront, Deploy, Accounting, Account, Notifications, Settings, Support | > **Info:** Menu visibility, module availability and permission to perform a specific action are separate checks. If an operation is owner-only, opening its page as a Manager does not bypass that requirement. #### Accountant Accountants see a minimal set of items focused on financial operations: | Visible Items | |---| | Dashboard, Accounting, Multichannel, Account, Notifications, Support | #### Operator Operators have access to customer-facing and order-processing features: | Visible Items | |---| | Dashboard, Conversations, Orders, Media, Shipping, Appointments, Accounting, Multichannel, Notifications, Support | > **Info:** The Operator role is designed for customer support staff and fulfillment teams. They can view and respond to conversations, process orders and shipments, and manage appointments. #### Viewer Viewers have read-only access to a limited set of sections: | Visible Items | |---| | Dashboard, Conversations, Analytics, Media, Account, Notifications, Support | ### How Filtering Works When a restricted role logs in: 1. The system checks the user's role against the role-menu access configuration. 2. Menu items that the role does not have access to are **completely hidden** from the sidebar -- they do not appear at all. 3. Section dividers are automatically removed if all items in a section are hidden, keeping the navigation clean. 4. If all items in a section group are removed, that entire section (including its divider) disappears. > **Warning:** Even though a menu item may be hidden from the sidebar, accessing the URL directly will still load the page. Access control for data is enforced at the API level, so unauthorized users will see error messages or empty data if they try to access restricted pages directly. ## Sidebar Footer The bottom section of the sidebar contains three utility buttons: ### Language Selector | Element | Description | |---|---| | **Globe icon** | Click to open the language selection popup. | | **Current language name** | Displayed next to the icon when the sidebar is expanded (e.g., "English"). | When you click the globe icon: 1. A popup menu appears above the button listing all 18 available languages. 2. The currently selected language has a **blue checkmark** next to it. 3. Click any language to switch. The page will reload with the new language applied. 4. Your preference is saved in a browser cookie (`NEXT_LOCALE`) and persists for one year. Available languages: English, Persian, Arabic, Turkish, Spanish, Chinese, Hindi, French, Portuguese, Russian, Japanese, German, Korean, Italian, Polish, Dutch, Urdu, and Hebrew. ### Theme Toggle | Element | Description | |---|---| | **Moon icon** (light mode) | Click to switch to dark mode. | | **Sun icon** (dark mode) | Click to switch to light mode. | | **Label** | Shows "Dark mode" or "Light mode" when the sidebar is expanded. | The theme change is instant and applies to all dashboard pages. ### Logout Button | Element | Description | |---|---| | **Logout icon** | Click to sign out of your account. | | **Label** | Shows "Logout" when the sidebar is expanded. | | **Hover effect** | The button turns red on hover to indicate it is a destructive action. | When you click Logout: 1. Your access and refresh tokens are removed from the browser. 2. Your session state is cleared. 3. You are returned to a logged-out state and can navigate to the login page. ## Navigation Tips 1. **Use the collapse toggle** when you need more screen space for content-heavy pages like the Products table or Conversations inbox. 2. **Check the notification bell** in the top-right corner regularly for important alerts about orders, stock levels, and system issues. 3. **Bookmark frequently used pages** -- the dashboard uses standard URLs so browser bookmarks work perfectly. 4. **Use keyboard shortcuts** in your browser (like back/forward navigation) to move between recently visited pages. 5. **Watch for the review star indicator** on the Products menu item -- it means customers have submitted reviews that need your attention. ## Sub-Navigation Within Sections Many sections have their own sub-pages that you access by clicking deeper into the section. For example: | Section | Sub-Pages | |---|---| | **Products** | Product list, Add product, Import products, Categories, Product settings | | **Storefront** | Setup, Homepage builder, Header, Footer, Pages, SEO, Analytics | | **Accounting** | Dashboard, Chart of Accounts, Sales Invoices, Contacts, Tax Rates, Payment Terms, Budgets, Treasury, Inventory, Products, Settings | | **Settings** | General, Security, Notifications, Integrations, Checkout, Data & Privacy, Backup & Restore | | **Shipping** | Shipping rules and configuration | Sub-pages are typically accessed through tabs, buttons, or links within the section's main page. The sidebar menu item for the parent section remains highlighted when you are on any sub-page. ## Next Steps Now that you understand how to navigate the dashboard, learn about the [Dashboard Overview](https://directsale.ai/help/dashboard/index) page and the key metrics it displays. --- Source: https://directsale.ai/help/getting-started/support # Support Tickets and Getting Help Use **Dashboard > Support** when an account-specific problem cannot be resolved with Help. Smart Help explains procedures; a support ticket sends the issue to the platform's support team. ## Before you start Check the relevant guide and capture the exact error, affected page, approximate time and steps that reproduce it. Check whether the change was actually saved before repeating it. Do not repeat payments, imports or invoice posting simply because a response was delayed. ## Open and follow a ticket 1. Open **Support** and choose **New ticket**. 2. Enter a specific subject, such as "Linked Stores invitation cannot be accepted". 3. Describe expected versus actual behavior, the affected feature and what you already checked. 4. Choose the appropriate priority: Low, Normal, High or Urgent. Priority does not promise a fixed response time. 5. Attach relevant screenshots or files within the displayed upload restrictions. Remove passwords, API keys and unrelated personal data first. 6. Submit, then open the ticket in the ticket list to confirm the saved message and status. 7. Add follow-up information to that ticket rather than creating multiple tickets for the same problem. Read replies in the conversation and use the available status controls when the issue is resolved. ## What to include | Problem | Useful information | | --- | --- | | Product AI/import | Product name or SKU, job phase and exact error; avoid re-uploading confidential catalogs to unrelated services | | Payments | Order/invoice reference, provider, amount/currency and approximate time; never card details or provider secrets | | Channel connection | Platform, connection status and permission error; never access tokens | | Linked tenants | Store names, hub/satellite role and relationship status | | Website | Page path, preview versus published domain, and screenshot | | Missing permissions | Your role and the menu/action that is missing | ## Verify the result A submitted ticket should appear in the list and open with its message. A file chosen in the browser is not proof it uploaded; inspect the saved attachment. Check the existing ticket after a connection failure before submitting again. ## Troubleshooting If an attachment fails, use a smaller permitted file and check the stated limit. If the list is empty, remove filters and confirm the current account. If the page is inaccessible, contact the support address shown in the panel or public site's Contact page. Smart Help cannot inspect private tickets, issue refunds or change settings for you. See [Smart Help](https://directsale.ai/help/getting-started/smart-help) for private question-and-answer guidance and [Security](https://directsale.ai/help/settings/security) for account access problems. --- Source: https://directsale.ai/help/getting-started/troubleshooting # Troubleshooting a Workflow Without Duplicating Actions Use this checklist when a save, generation, connection or transaction does not behave as expected. ## Before retrying 1. Record the page, selected tenant, role, time and exact message. 2. Decide whether the action was read-only, saved data, started background work or caused an external transaction. 3. Reload the relevant list/detail or job status to check whether it already succeeded. 4. Preserve unsaved text in an appropriate private location before navigating away. 5. Retry only after checking the current state and correcting the cause. ## Interpret the symptom | Symptom | What to investigate | | --- | --- | | Button missing/disabled | Required fields, saved record, role, plan/module availability and current status | | Save succeeded but page looks unchanged | Wrong tenant/page, unsaved editor area, custom layout override or publication state | | Background progress stops | Current server/job status and connection; closing the browser may not stop work | | Limit reached | Which limit: records, messages, STT/TTS, images, storage, file size or per-request scope | | Connection/review unavailable | Temporary or configuration failure, not a completed rejection | | Data not found | Search/filter, language, active state, correct tenant and source mapping | | Access denied | Sign-in state and permission; do not use another tenant's identifiers | | Payment result unclear | Inspect original order/provider reference; do not pay again just to refresh status | ## Safe verification For a product, reopen it and compare saved fields. For content editors, inspect both saved draft and intended public preview. For orders/invoices, inspect source status and history. For a channel, test both incoming and outgoing flow. For a linked store, inspect field ownership and sync result. ## Ask for support Use [Support](https://directsale.ai/help/getting-started/support) with the exact error and minimal relevant references. Never include passwords, tokens, full payment-card details or unrelated customer data. Smart Help explains steps but cannot inspect or repair your private account. ## Find the right guide [Products](https://directsale.ai/help/products/index), [AI Content](https://directsale.ai/help/products/ai-content), [Storefront](https://directsale.ai/help/storefront/index), [Checkout](https://directsale.ai/help/settings/checkout), [Orders](https://directsale.ai/help/orders/index), [Accounting](https://directsale.ai/help/accounting/index), [Linked Stores](https://directsale.ai/help/multichannel/linked-stores), [Messaging](https://directsale.ai/help/channels/connection-guide) and [Billing](https://directsale.ai/help/billing/index) describe the specific workflow and its expected result. --- Source: https://directsale.ai/help/dashboard/index # Dashboard Overview The Dashboard is the first page you see after logging in. It provides an at-a-glance summary of your store's key metrics and offers quick access to the most common tasks. This page is accessible to all roles. ## Page Layout The Dashboard overview page is divided into two main sections: 1. **Header and Statistics Cards** -- A greeting and four metric cards at the top. 2. **Quick Action Cards** -- Three clickable cards below the stats that link to common tasks. ## Header At the top of the page, you will see: | Element | Description | |---|---| | **Greeting** | A personalized welcome message that includes your store name (e.g., "Hello, My Store!"). | | **Subtitle** | A brief description of the dashboard's purpose. | The greeting dynamically uses the store name from your account. If you change your store name in Settings, it will update here automatically on your next visit. ## Statistics Cards Below the header, four statistics cards are displayed in a responsive grid layout. On large screens, all four cards appear in a single row. On medium screens, they display in two columns. On small screens, they stack vertically. Each card shows a metric title, an icon, a large numeric value, and a descriptive label. ### Card 1: Products | Property | Details | |---|---| | **Title** | Products | | **Icon** | Package icon (top right of card) | | **Value** | The total number of products in your catalog | | **Description** | "Registered products" | This number represents your complete product count across all categories and stock statuses. It includes active, inactive, in-stock, and out-of-stock products. > **Info:** If this number shows 0, you have not added any products yet. Click the **"Upload Products"** quick action card below, or navigate to **Products** in the sidebar to start adding your catalog. ### Card 2: Conversations | Property | Details | |---|---| | **Title** | Conversations | | **Icon** | Message bubble icon (top right of card) | | **Value** | The total number of customer conversations | | **Description** | "Active conversations" | This counts all conversation sessions across all channels (website widget, Telegram, WhatsApp, etc.). Each unique customer interaction creates one conversation. ### Card 3: Messages Used | Property | Details | |---|---| | **Title** | Messages Used | | **Icon** | Lightning bolt icon (top right of card) | | **Value** | A fraction showing messages used vs. your quota (e.g., "1,250 / 5,000") | | **Progress Bar** | A visual bar below the number showing usage percentage | | **Description** | Shows the percentage used (e.g., "25% of monthly quota used") | This card tracks your AI message usage for the current billing month against your plan's monthly quota. #### Understanding the Progress Bar | Usage Level | Bar Color | Meaning | |---|---|---| | 0-70% | Blue | Normal usage. You have plenty of messages remaining. | | 71-90% | Blue | Getting closer to your limit. Consider monitoring usage. | | 91-100% | Blue (full) | Nearing or at your limit. The bar fills to 100% maximum even if usage exceeds the quota. | > **Warning:** When your message usage reaches 100% of your quota, the AI chatbot may stop responding to new customer messages until the next billing cycle or until you upgrade your plan. Monitor this card regularly to avoid service interruptions. #### How Message Usage is Calculated - Each AI-generated response to a customer counts as one message. - Messages sent by human operators (when taking over a conversation) do not count against the AI quota. - The counter resets at the beginning of each billing month. ### Card 4: Current Plan | Property | Details | |---|---| | **Title** | Current Plan | | **Icon** | Trending up icon (top right of card) | | **Value** | Your subscription plan name (e.g., "Starter", "Professional", "Enterprise") | | **Description** | Information about upgrading | This card displays the name of your current subscription plan. If no plan is set, it defaults to displaying "Starter". > **Info:** To upgrade your plan or view available plan options, navigate to the **Account** section in the sidebar or contact the platform support team. ## Quick Action Cards Below the statistics cards, three quick action cards provide one-click access to the most common tasks. Each card is clickable and navigates you to the relevant page. ### Upload Products | Property | Details | |---|---| | **Icon** | Package icon | | **Title** | Upload Products | | **Description** | Explains that you can bulk-import your product catalog | | **Navigates To** | `/dashboard/products/import` | Click this card to go to the product import page, where you can upload products via CSV, Excel, or other supported file formats. #### When to Use This - You are setting up your store for the first time and have an existing product list. - You need to add a large number of products at once. - You want to update product data in bulk. ### View Conversations | Property | Details | |---|---| | **Icon** | Message bubble icon | | **Title** | View Conversations | | **Description** | Explains that you can review all customer chat sessions | | **Navigates To** | `/dashboard/conversations` | Click this card to see all customer conversations. This is where you can read chat transcripts, monitor AI responses, and take over conversations when human intervention is needed. #### When to Use This - You want to check how the AI chatbot is performing with customers. - You need to respond to a customer inquiry that requires human attention. - You want to review conversation history for quality assurance. ### AI Settings | Property | Details | |---|---| | **Icon** | Lightning bolt icon | | **Title** | AI Settings | | **Description** | Explains that you can customize your AI chatbot behavior | | **Navigates To** | `/dashboard/settings` | Click this card to go to the Settings page, where you can configure how the AI chatbot behaves, including its tone, knowledge base, response style, and more. #### When to Use This - You want to change how the AI chatbot responds to customers. - You need to adjust the chatbot's personality or tone. - You want to configure which products or information the chatbot has access to. ## Loading States While the dashboard fetches your data, each statistics card displays `...` as a placeholder for the numeric values. This loading state typically lasts only a moment. If the data fails to load, the values may remain at 0 and an error will be logged to the browser console. ## Data Refresh The dashboard statistics are fetched when the page first loads. To refresh the data: 1. Navigate away from the dashboard and then back. 2. Refresh the page in your browser (F5 or Ctrl+R / Cmd+R). The data is fetched in parallel from three API endpoints: | API Call | Data Retrieved | |---|---| | Products API | Total product count | | Conversations API | Total conversation count | | Tenant Usage API | Messages used this month and monthly message quota | ## Role-Based Access The Dashboard overview page is available to **all roles** (Owner, Admin, Manager, Accountant, Operator, and Viewer). However, the quick action cards navigate to pages that may have different access levels: | Quick Action | Accessible By | |---|---| | Upload Products | Owner, Admin, Manager | | View Conversations | Owner, Admin, Manager, Operator, Viewer | | AI Settings | Owner, Admin, Manager | > **Info:** If you click a quick action card and land on a page where you have limited or no access due to your role, the page will either show restricted content or display an appropriate message. The data-level access control is enforced by the API, not just the front-end navigation. ## Tips for Using the Dashboard Effectively 1. **Check the Messages Used card daily** -- This helps you anticipate when you might need to upgrade your plan or reduce chatbot activity. 2. **Use the Products card as a health check** -- If the product count is unexpectedly low or zero, it might indicate an import issue or a data problem. 3. **Monitor conversations regularly** -- The Conversations count helps you gauge customer engagement. A sudden spike might mean a marketing campaign is driving traffic, while a drop might indicate a technical issue with the chat widget. 4. **Use quick actions for your daily workflow** -- The three quick action cards are designed for the tasks you will perform most frequently. You can also access these same pages from the sidebar. 5. **Look at the notification bell** -- The notification bell in the top-right corner will alert you to important events (new orders, low stock, sync errors) that might not be reflected in the dashboard stats. ## Differences from the Analytics Page The Dashboard overview is designed as a **quick summary**. For deeper analysis, use the **Analytics** page (`/dashboard/analytics`), which provides: - Conversation trends over time (daily, weekly, monthly charts) - Message breakdown between user and assistant messages - Hourly activity patterns showing peak customer engagement times - Top products mentioned in conversations - Revenue and conversion rate tracking - Platform breakdown (which channels drive the most conversations) - Growth metrics comparing current and previous periods Navigate to Analytics from the sidebar for these advanced reports. ## Next Steps - [Products](https://directsale.ai/help/products/index) -- Learn how to manage your product catalog - [Conversations](https://directsale.ai/help/conversations/index) -- Understand how to monitor and manage customer chats - [Settings](https://directsale.ai/help/settings/index) -- Configure your store and AI chatbot settings - [Analytics](https://directsale.ai/help/analytics/index) -- Dive into detailed reporting and insights --- Source: https://directsale.ai/help/products/index # Products The **Products** section is where you manage your entire product catalog. From here you can add, edit, organize, and enrich your products with AI-generated content before they are displayed in your storefront and used by the sales chatbot. ## What You Can Do | Feature | Description | |---------|-------------| | **Add Products** | Create products manually, upload from Excel/CSV files, or import from your existing store (WooCommerce, Shopify, PrestaShop, OpenCart) | | **Edit Products** | Update any product field inline or through the full edit dialog, including prices, stock status, and AI ranking | | **Manage Categories** | Organize products into a hierarchical category tree with parent/child relationships | | **Import & Export** | Bulk import products from spreadsheets or e-commerce platforms, and export your catalog to Excel | | **Product Variants** | Create size, color, and other variations for a single product with independent pricing and stock | | **AI Content** | Auto-generate product descriptions, replace image backgrounds, and create professional product photos | | **Reviews & Ratings** | Moderate customer reviews, approve or reject submissions, and reply to feedback | | **Product Settings** | Configure similar product recommendations and brand photo style settings | ## Products Page Overview When you navigate to **Products** in the dashboard sidebar, you land on the main products list page. This page has several key sections: ### Header Bar At the top of the page you will find: - **Product count** showing how many products are in your catalog - **Export Excel** button to download your products as a spreadsheet - **Export Backup / Restore Backup** to preserve or replace the product catalog using a product ZIP; see [Catalog Backup](https://directsale.ai/help/products/catalog-backup) - **Repair Metadata** to preview and apply extracted-field/category repairs; read the conflict confirmation before applying - **Import Products** button to navigate to the import wizard - **Add Product** button to open the product creation dialog ### AI Content Card Below the header, the **AI Content** card shows the progress of AI-generated descriptions and images across your catalog. It displays: - A progress bar for **Descriptions** (how many products have AI-generated descriptions) - A progress bar for **Images** (how many products have AI-generated background images) - Checkboxes to choose whether to generate descriptions, images, or both - A **Regenerate existing** option to overwrite previously generated content - A **Generate All** button to batch-process all products The bars show catalog coverage, while the monthly usage labels show consumed credits. Generate All descriptions use SEO + AI with automatic keyword/URL approval and one text credit per generated product. Images, Replace BG and image previews share one image allowance. See [AI Content](https://directsale.ai/help/products/ai-content) for scope, quota and partial-result checks. ### Chatbot Readiness Card The **Chatbot Readiness** card shows the processing pipeline status for your AI sales assistant: - **Total Products** in your catalog - **Ready** products that are fully processed and available to the chatbot - **Pending** products that are waiting to be processed - **Error** products where processing encountered issues - **Embedding Status** showing how many products have vector embeddings for semantic search > **Info:** Products need to be fully processed (status: Ready) before the AI chatbot can recommend them to customers. If you see pending or error products, use the **Reprocess Pending** button to retry. ### Search and Filters The filter bar lets you narrow down your product list: - **Search** by product name - **Stock Status** filter (All, In Stock, Out of Stock, Limited, Coming Soon) - **Category** filter - **Sort By** options: Newest, Oldest, Lowest Price, Highest Price, Name A-Z, Name Z-A, AI Rank - **Advanced Filters** for price range, featured products only, and on-sale products only ### Bulk Actions Select multiple products using the checkboxes in the product table to reveal the bulk actions toolbar: - **Delete** selected products - **Change Status** of selected products (In Stock, Out of Stock, Limited, Coming Soon) - **Move to categories** opens the category tree for up to 500 selected products. Choose one or more categories and a primary category, then click **Apply**. This replaces the current category assignments for every selected product; it does not add to the old assignments. No AI credits are used. - **Feature / Unfeature** selected products - **Reprocess AI** to re-run AI processing on selected products ### Product Table The main table displays your products with the following columns: | Column | Description | |--------|-------------| | **Checkbox** | Select products for bulk actions | | **Product** | Product image, name, description preview, and badges (featured star, AI description badge, external link) | | **Category** | Click the category badges or the empty category cell to change this product's categories directly. Choose multiple categories and mark the primary with the star, then click Apply | | **Price** | Clickable price for inline editing. Shows both regular and sale price when festival mode is active | | **Status** | Dropdown to quickly change stock status. Shows pre-order settings for "Coming Soon" products and estimated delivery days for in-stock products | | **AI Rank** | Suggestion rank (0-20) and quality rating, both clickable for inline editing | | **Actions** | Festival toggle, Page Builder, Edit, and Delete buttons | ### Pagination For alternative input methods see [PDF Catalog Import](https://directsale.ai/help/products/catalog-pdf) and [Web Import](https://directsale.ai/help/products/web-import). For generation and display see [AI Content](https://directsale.ai/help/products/ai-content), [SEO + AI](https://directsale.ai/help/products/seo-ai) and [Storefront Product Display](https://directsale.ai/help/products/storefront-display). Products are displayed 10 per page with Previous/Next page navigation at the bottom. --- Source: https://directsale.ai/help/products/adding-products # Adding Products There are three ways to add products to your catalog: manually through the product form, by importing from a spreadsheet file (Excel or CSV), or by connecting to an existing e-commerce store. This page covers manual product creation. > **Info:** For bulk importing products from files or stores, see [Import & Export](https://directsale.ai/help/products/import-export). ## Opening the Add Product Dialog Click the **Add Product** button in the top-right corner of the Products page. This opens the product creation dialog with all available fields. ### Upload Product Images The first section of the form is the **Product Images** manager. You can upload up to **10 images** per product. - Click the **Upload** button (dashed border with a "+" icon) to select an image file from your computer - Click the **Gallery** button to select from previously uploaded images - The first uploaded image automatically becomes the **primary image** - Supported formats: JPEG, PNG, GIF, WebP Once images are uploaded, you can: - **Reorder** images using the move up/down arrows - **Set as Primary** to change which image is the main product photo - **Edit** an image using the built-in image editor (crop, rotate, etc.) - **Remove** an image by clicking the delete button on its thumbnail ### Fill in Quick Product Info The **Quick Product Info** field holds source notes and specifications (up to 20,000 characters), including facts extracted from PDF catalogs. Keep catalog facts here before using the product AI tools to write a description. Short, manually entered summaries also work well. Example: ``` Samsung Galaxy S24 Ultra, 256GB, Titanium Black 12GB RAM, Snapdragon 8 Gen 3, 200MP camera Best for photography, gaming, and productivity ``` ### Enter Product Details Fill in the core product information: | Field | Required | Description | |-------|----------|-------------| | **Product Name** | Yes | The name of the product as it will appear in your store | | **Brand** | No | The manufacturer or brand name (e.g., Samsung, Apple, Sony) | | **Categories** | No | Select one or more categories from your category tree. Click the star to set the primary category. Use **Quick Create** to add a new category inline | | **Weight (kg)** | No | Product weight in kilograms | | **Length (cm)** | No | Package length in centimeters | | **Width (cm)** | No | Package width in centimeters | | **Height (cm)** | No | Package height in centimeters | > **Info:** Providing brand, weight, and dimensions helps the AI generate more accurate and detailed product descriptions. ### Use AI Tools The **AI Tools** section provides two powerful features: **Generate Description** -- Click **Generate** to analyze the current product information and uploaded images. Review the editable description, structured specifications and SEO fields before saving. Sections depend on the reliable facts available; a pros/cons list, expert claim or fixed word count is not guaranteed or required. The AI requires at least one product image to be uploaded before it can generate a description. **Replace Background** -- In AI Studio Background, select a source photo, 1-5 style choices, the offered color and product size settings, then click **Replace BG**. Each click edits the selected photo, not five source images. Review the result and Save the product to keep it. New results share the same monthly AI image allowance as Generate All and previews. After saving the product, **SEO + AI (Beta)** offers a separate saved-product keyword/URL brief and preview workflow. See [AI Content](https://directsale.ai/help/products/ai-content) and [Product SEO + AI](https://directsale.ai/help/products/seo-ai) for the difference between these buttons and bulk generation. > **Warning:** AI description generation and background replacement are subject to your plan's quota limits. The remaining quota is displayed beneath each tool. ### Set Pricing and Stock | Field | Required | Description | |-------|----------|-------------| | **Price** | Yes | The selling price of the product | | **Cost Price** | No | Your purchase/cost price (used for profit calculations) | | **Stock Quantity** | No | Number of units in stock. Leave empty to skip inventory tracking | | **Low Stock Threshold** | No | Alert threshold for low stock notifications (default: 5) | | **Stock Status** | No | Current availability: In Stock, Out of Stock, Limited, or Coming Soon | | **Product URL** | No | External link to the product on your main website | | **SKU** | No | Stock Keeping Unit identifier | | **Source Category** | No | Original category path from an imported source | #### Coming Soon / Pre-order Settings When you select **Coming Soon** as the stock status, additional options appear: | Field | Description | |-------|-------------| | **Available At** | The expected date when the product will become available | | **Pre-order Enabled** | Toggle to allow customers to place pre-orders | | **Payment Type** | Choose between **Full payment** or **Deposit** for pre-orders | | **Deposit Percent** | If deposit is selected, the percentage of the price required (1-99%) | #### Estimated Delivery Days When the stock status is **In Stock** or **Limited**, you can set: | Field | Description | |-------|-------------| | **Estimated Delivery Days** | Number of days for delivery (displayed to customers on the storefront) | ### Write the Product Description Use the **rich text editor** to write or edit the product description. This is a full-featured editor supporting: - Bold, italic, underline formatting - Headings - Bullet and numbered lists - Links - HTML content (including content generated by AI) A character count is displayed in the top-right corner of the description section. ### Configure AI Ranking Settings These settings control how the AI chatbot prioritizes this product when making recommendations: | Field | Range | Description | |-------|-------|-------------| | **Suggestion Rank** | 0-20 | How strongly the AI should recommend this product. Higher values (16+) give the product priority in recommendations | | **Quality Rating** | 0-20 | Your assessment of the product's quality. Higher values indicate premium products | | **Value Rating** | 0-20 | Price-to-quality ratio. Higher values indicate the product is a great deal | | **Selling Points** | Text | Key selling points, one per line. These are used by the chatbot when describing the product to customers | ### Configure Festival / Sale Settings Enable **Festival Mode** to put a product on sale: | Field | Description | |-------|-------------| | **Enable Festival Mode** | Toggle to activate the sale | | **Sale Price** | Enter as a fixed price or as a discount percentage. Use the toggle to switch between modes | | **Sale End Date** | When the sale expires | When using percentage mode, the calculated final price is displayed below the input field. ### Add SEO and Product Identifiers | Field | Max Length | Description | |-------|-----------|-------------| | **GTIN** | -- | Global Trade Item Number (barcode). A warning appears if this is missing | | **MPN** | -- | Manufacturer Part Number. Temporary numbers (TMP-...) are flagged for replacement | | **SEO Title** | 70 chars | Page title for search engines | | **SEO Description** | 160 chars | Meta description for search engine results | | **Image Alt Text** | 255 chars | Alt text for the primary product image (important for accessibility and SEO) | > **Info:** When you use the AI description generator, it automatically fills in the SEO Title, SEO Description, and Image Alt Text fields. ### Certify and Save Before saving a new product, you must check the **ownership certification** checkbox confirming that you have the right to sell this product and use its images. Click **Add Product** to save the product to your catalog. ## What Happens After Adding a Product After a product is created: 1. The product appears in your product list immediately 2. The system queues the product for **AI processing** (embedding generation for the chatbot) 3. Once processed, the product becomes available for the AI chatbot to recommend 4. The product also appears in your storefront catalog You can check the processing status in the **Chatbot Readiness** card on the main Products page. --- Source: https://directsale.ai/help/products/editing-products # Editing Products DirectSale provides multiple ways to edit your products: inline editing directly in the product table for quick changes, the full edit dialog for comprehensive updates, and bulk actions for updating multiple products at once. ## Inline Editing Several fields can be edited directly in the product table without opening a dialog. This is the fastest way to make quick adjustments. ### Inline Price Editing Click on any product's **price** in the table to activate inline editing: 1. Click the displayed price -- it becomes an editable text input 2. Type the new price (supports comma-formatted numbers like 1,299.00) 3. Press **Enter** to save, or **Escape** to cancel 4. Clicking outside the field also saves the change > **Info:** The change is applied optimistically -- the UI updates immediately while the API request is sent in the background. If the save fails, the original value is restored automatically. ### Inline Sale Price Editing When a product has **Festival Mode** enabled, a sale price field appears below the regular price: 1. Click on the sale price (or the "Add sale price" text if none is set) 2. Enter the sale price as a fixed amount 3. Click the **%** button to switch to percentage mode, then enter a discount percentage 4. In percentage mode, the calculated final price is shown below the input 5. Press **Enter** to save ### Inline Stock Status Change a product's stock status using the dropdown in the **Status** column: - **In Stock** (green indicator) - **Out of Stock** (red indicator) - **Limited** (yellow indicator) - **Coming Soon** (blue indicator) #### Coming Soon Quick Configuration When you select **Coming Soon**, a configuration dialog opens where you can set: | Field | Description | |-------|-------------| | **Available Date** | When the product will be available | | **Pre-order Enabled** | Toggle to allow pre-orders | | **Payment Type** | Full payment or Deposit | | **Deposit Percent** | Required deposit percentage (if deposit mode is chosen) | Click **Save** to apply the coming soon settings. #### Estimated Delivery Days For products with **In Stock** or **Limited** status, click the delivery time link below the status dropdown to set estimated delivery days. A small dialog appears where you enter the number of days. ### Inline AI Rank The **AI Rank** column shows two clickable elements: - **Suggestion Rank** -- the circular badge with a number (0-20). Click to open a dropdown and select a new rank - **Quality Rating** -- the smaller badge below with an award icon. Click to change the quality rating (0-20 or "Not set") Changes are saved immediately when you select a new value. ### Inline Festival Toggle In the **Actions** column, the party popper icon toggles Festival Mode on/off for each product: - **Red button** means festival mode is active - **Gray/ghost button** means festival mode is inactive - Click to toggle the state ## Full Edit Dialog For comprehensive editing, click the **pencil icon** in the Actions column to open the full edit dialog. This dialog contains all the same fields as the Add Product form, plus additional features: ### Variant Management The Variant Manager section appears at the bottom of the edit dialog for existing products. See [Product Variants](https://directsale.ai/help/products/variants) for details. ### Shipping Override An additional **Shipping Override** section appears for existing products: | Field | Description | |-------|-------------| | **Free Shipping** | Check to offer free shipping on this specific product, overriding your store's default shipping policy | | **Fixed Shipping Cost** | Set a fixed shipping cost for this product. Leave empty to use your store's default shipping rules | > **Info:** Shipping overrides only apply to individual products. They take priority over your store-wide shipping configuration. ### Saving Changes Click **Save Changes** at the bottom of the dialog. The product will be updated and the product list will refresh automatically. ## Bulk Actions Select multiple products using the checkboxes in the leftmost column of the product table. A bulk actions toolbar appears above the table. ### Select Products - Click the **checkbox** next to individual products to select them - Click the **checkbox in the header row** to select/deselect all products on the current page - The toolbar shows how many products are selected ### Available Bulk Actions | Action | Description | |--------|-------------| | **Delete** | Permanently delete all selected products. A confirmation dialog appears before deletion | | **Change Status** | Set the stock status of all selected products to In Stock, Out of Stock, Limited, or Coming Soon | | **Feature** | Mark all selected products as featured (they will be highlighted in your storefront) | | **Unfeature** | Remove the featured flag from all selected products | | **Reprocess AI** | Re-run the AI processing pipeline on all selected products (useful if processing failed or you want to update embeddings) | | **Clear** | Deselect all products | ### Complete the Action Click the desired action button. For destructive actions like Delete, a confirmation prompt appears. A loading spinner is shown while the operation is in progress. ## Build URLs from Names Use **Build URLs from names** in the top Products toolbar to replace selected products' imported links with local product paths. Include all categories in your account if their paths also need updating, or update categories independently. The preview includes active and inactive categories. Paths keep each name's original language and script, without AI or AI credits. For example, **برند موتور برق** becomes `/categories/برند-موتور-برق`. Spaces and punctuation become hyphens; duplicate names receive a numeric suffix. Names without usable letters or numbers are skipped. Review the current and proposed URLs, then click **Save URLs**. Original imported product links are retained separately, and previous local product/category paths continue to resolve to their new canonical pages. The operation supports up to 500 selected products and 1,000 categories at a time. Refresh the preview if an item or website changes before saving. A website is not required to save paths. With an active VPS website or a published DirectSale website, links use its domain. Without one, relative paths are saved and become public when the website is published. This action does not publish a website or make inactive products public. The **Product URL** field displays and saves the generated relative path even without a published website. Earlier batches that left this field empty display the existing slug's path when you reopen the product. Run the URL action again to repair those stored empty values. Relative paths are not clickable on the dashboard hostname; full website URLs remain clickable. ## Page Builder Click the **palette icon** in the Actions column to navigate to the **Page Builder** for a specific product. The Page Builder allows you to design a custom product page layout for your storefront. The **Template library** includes visual and technical product-story layouts. Each section's **Appearance & layout** settings can add scroll-linked motion or pin a feature beside longer content. Review these effects in the storefront preview, then publish the layout when ready. ## Deleting a Product To delete a single product: 1. Click the **trash icon** in the Actions column 2. Confirm the deletion in the prompt that appears 3. The product is permanently removed from your catalog > **Warning:** Deleting a product is permanent and cannot be undone. The product will also be removed from the AI chatbot's knowledge base and your storefront. --- Source: https://directsale.ai/help/products/categories # Categories Categories let you organize products into a hierarchical tree structure with parent and child relationships. A well-organized category tree helps both customers and the AI chatbot find products more efficiently. ## Categories Page Layout The categories page is divided into two panels: - **Left panel (3/5 width)** -- The category tree view showing all your categories in a hierarchical list - **Right panel (2/5 width)** -- The category form for creating or editing a category ## Category Tree The tree view displays all categories with indentation to reflect the parent-child hierarchy. Each category row shows: | Element | Description | |---------|-------------| | **Expand/Collapse arrow** | Click to show or hide child categories. Only appears when a category has children | | **Category name** | The name of the category | | **AI badge** | A sparkle icon appears if the category was discovered automatically by AI during product import | | **Product count** | A badge showing the number of products assigned to this category | | **Hover actions** | Three action buttons appear when you hover over a category row (see below) | ### Tree Controls At the top of the tree card you will find: - **Expand All** -- Expands every node in the tree so all categories are visible - **Collapse All** -- Collapses every node, showing only top-level categories - **Search** -- A search field that filters the tree by category name. Both matching categories and their parent chain remain visible ### Hover Actions When you hover over a category row, three action buttons appear on the right side: | Button | Description | |--------|-------------| | **Add Subcategory** | Creates a new category with the hovered category pre-selected as the parent. The parent node auto-expands | | **Edit** | Opens the category form on the right panel, pre-filled with the category's current values | | **Delete** | Opens a confirmation dialog to delete the category | ### Selecting a Category Click on any category row to select it (highlighted with a colored border). The selected category does not automatically open the edit form -- you must click the edit hover action to edit it. ### Inactive Categories Categories that are marked as inactive appear with reduced opacity in the tree view. ## Creating a Category ### Click Add Category Click the **Add Category** button in the top-right corner of the page. The category form appears in the right panel. Alternatively, hover over an existing category and click the **Add Subcategory** button to create a child category with the parent pre-selected. ### Fill in the Form The category form contains the following fields: | Field | Required | Description | |-------|----------|-------------| | **Category Name** | Yes | The name of the category | | **Parent Category** | No | Select a parent category from the dropdown to make this a subcategory. Choose "No parent" for a top-level category | | **Description** | No | A text description of the category | | **Category Image** | No | Upload an image for the category. For existing categories, an **Generate AI Image** button is also available | | **Slug** | No | URL-friendly identifier. Leave empty for auto-generation | | **Display Order** | No | Numeric value controlling the sort order of this category among its siblings (default: 0) | | **Active** | No | Toggle switch to enable or disable the category (default: enabled) | | **SEO Title** | No | Page title for search engines (max 70 characters) | | **SEO Description** | No | Meta description for search engine results (max 160 characters) | ### Save Click **Save** to create the category. The tree refreshes automatically to show the new category. ## AI-Generated Category Image For existing categories (not new ones), the category image section includes a **Generate AI Image** button with a wand icon. Click this button to have AI generate a representative image for the category based on its name and context. > **Info:** AI image generation for categories is only available when editing an existing category, not when creating a new one. ## Editing a Category 1. Find the category in the tree (use the search field to filter if needed) 2. Hover over the category and click the **Edit** (pencil) button 3. The form on the right panel populates with the category's current values 4. Make your changes and click **Save** ### Parent Category Restrictions When editing a category, the parent dropdown automatically excludes: - The category itself (a category cannot be its own parent) - All descendants of the category (this prevents circular references) ## Deleting a Category 1. Hover over the category you want to delete and click the **Delete** (trash) button 2. A confirmation dialog appears with a warning message 3. Click **Delete Category** to confirm > **Warning:** Deleting a category may affect products that are assigned to it. Products will lose their category assignment. Subcategories of the deleted category may also be affected. Review the warning message carefully before confirming. ## Assigning Products from the Products List On **Products**, click the **Category** cell for any product to open its current assignments. Select one or more categories, including child categories, and use the star to mark the primary category. **Apply** saves the changes and refreshes the list. Deselect every category to remove the product's assignments. The category chip on mobile opens the same editor. For a group, select products with the row checkboxes and click **Move to categories** in the selected-products toolbar. Choose the categories and primary category, then click **Apply**. The chosen categories replace the current assignments for every selected product, including products with no category. A group can contain up to 500 products, with up to 100 categories selected per operation. **Cancel** leaves the products unchanged. If loading or saving fails, retry without losing your selection. Category changes update the website's product/category views and linked website publication through the normal synchronization process. Linked-store ownership rules still apply. These actions do not call AI or consume AI credits. ## AI Category Descriptions For an existing category, open **Edit Category** and click **Generate description with AI** beside the Description editor. Save new categories, or changes to the name or parent, first so generation uses the saved category and its product assignments. In the preview, click **Generate unfinished drafts**. Review the rich-text description, SEO title and separate SEO meta description; all three can be edited. **Use in editor** copies the draft into the open form without saving the category. Click the form's **Save** button when ready. For a group, tick the checkboxes beside category names in the tree. Click **Generate descriptions for selected categories** in the selection toolbar. Batches contain up to 20 categories. Categories that already have a nonempty description are skipped by default. Select **Rewrite existing descriptions** to include them; changing this option clears earlier previews. Generation runs one category at a time. **Stop after current category** keeps completed drafts, and **Generate unfinished drafts** resumes the remaining items without regenerating completed ones. Review and edit each draft, choose which drafts to save, then click **Save selected drafts**. **Cancel** leaves category text unchanged. A save failure retains the previews and edits for retry. If a category changed after its preview, reopen the preview before saving; the batch does not overwrite that newer content. Saving an already-generated preview uses no additional AI allowance. Each generated category uses one **website AI text** allowance, displayed next to the generation controls. Generation uses the category name, parent and a bounded sample of active products in the category and its descendants. The preview reports the sample and total product counts. Names and content are scoped to your store. AI is instructed to use the category name's language, preserve brand/model spelling and avoid unsupported specifications, stock, price, warranty or authorized-dealer claims. For a brand/model name whose language is ambiguous, the saved category language provides the fallback. With no product evidence, the introduction stays short and neutral. Review the text before saving. Saved descriptions and SEO text use normal website synchronization; category URLs are preserved. ## AI-Discovered Categories When you import products (from files or store APIs), the system may automatically discover and create categories based on the imported product data. These categories are marked with a sparkle icon in the tree view. AI-discovered categories work the same as manually created categories -- you can edit, rename, reorganize, or delete them as needed. --- Source: https://directsale.ai/help/products/import-export # Import & Export DirectSale supports importing products from spreadsheet files (Excel and CSV) and from four major e-commerce platforms via API. You can also export your entire product catalog to Excel. ## Import Methods Overview | Method | Best For | |--------|----------| | **File Import (Excel/CSV)** | Migrating from spreadsheets, bulk uploading product lists, importing from any source that can export to Excel or CSV | | **WooCommerce API** | Importing directly from a WordPress/WooCommerce store (recommended for WooCommerce users) | | **Shopify API** | Importing directly from a Shopify store | | **PrestaShop API** | Importing directly from a PrestaShop store | | **OpenCart API** | Importing directly from an OpenCart store (requires REST API extension) | | **Web Scraper** | Importing from any website by analyzing its product pages | ## File Import (Excel / CSV) Navigate to **Products > Import Products** and select the **File Import** tab. ### Upload Your File Click the upload area or drag a file onto it. Supported file formats are: - `.xlsx` (Excel) - `.xls` (legacy Excel) - `.csv` (Comma-Separated Values) The system reads the file and proceeds to the column mapping step. ### Map Columns After the file is parsed, the column mapping screen appears. The system uses AI to automatically detect and map your spreadsheet columns to product fields. **AI-Powered Mapping:** - An AI analysis runs automatically after upload to detect column mappings - Each mapped field shows a **confidence percentage** badge (color-coded: green for 90%+, yellow for 70-89%, red for below 70%) - If a platform is detected (e.g., WooCommerce export format), it is displayed - If AI analysis fails, the system falls back to basic string matching **Required field mappings:** | Field | Description | |-------|-------------| | **Product Name** | The column containing product names (required) | | **Price** | The column containing product prices (required) | **Optional field mappings:** | Field | Description | |-------|-------------| | **Description** | Product description column | | **Category** | Product category column | | **SKU** | Stock Keeping Unit column | | **Stock** | Stock status column | | **Image URL** | Column containing image URLs | | **Product URL** | Column containing product page URLs | Each mapping field is a dropdown where you can select from all columns found in your spreadsheet. AI-suggested mappings are pre-selected but can be changed manually. **Detected Attributes:** If the AI detects additional product attributes in your spreadsheet (such as color, size, material, etc.), they appear in a "Detected Attributes" section with confidence scores. ### Select Rows to Import Below the column mapping, a preview table shows all rows from your file: - **Checkboxes** on each row let you select or deselect individual rows for import - **Select All / Deselect All** button to toggle all rows at once - **Search** field to filter rows by content - **Pagination** with configurable page sizes (25, 50, 100, 200 rows per page) - Mapped columns are highlighted in blue in the table header - Row count shows how many rows are selected for import out of the total You must also check the **ownership certification** checkbox confirming you have the right to sell these products. ### Import Products Click **Import Products** to start the import. A progress bar shows the percentage completed along with a count of processed rows vs. total rows. ### Review Results When the import completes, a summary card shows: | Metric | Description | |--------|-------------| | **Imported** | Number of products successfully created | | **Skipped** | Number of rows that were skipped (e.g., duplicates or missing required data) | | **Errors** | Number of rows that failed to import | | **Total** | Total number of rows processed | After the import, a suggestion card offers to run **AI Content Generation** on the newly imported products. You can click **Generate Now** to go directly to the products page with auto-generation enabled, or click **Later** to skip. ## Store API Import Navigate to **Products > Import Products** and select the **Store API** tab to see supported platforms, or go directly to **Products > Import Products > Store API** page. The API import page features a tab bar at the top with five import methods: **WooCommerce** (recommended), **Shopify**, **PrestaShop**, **OpenCart**, and **Web Scraper**. All API import methods follow a similar step wizard: **Connection > Preview > Complete**. ### WooCommerce Import ### Enter Connection Details | Field | Description | |-------|-------------| | **Site URL** | Your WooCommerce store URL (e.g., `https://yourstore.com`) | | **Consumer Key** | WooCommerce REST API consumer key (starts with `ck_`) | | **Consumer Secret** | WooCommerce REST API consumer secret (starts with `cs_`). Click the eye icon to toggle visibility | **How to get API keys:** 1. Go to your WordPress admin panel 2. Navigate to WooCommerce > Settings > Advanced > REST API 3. Click **Add Key** 4. Set Permission to **Read** 5. Copy the Consumer Key and Consumer Secret ### Test Connection Click **Test Connection** to verify your credentials. On success, the store name and total product count are displayed. ### Fetch Products After a successful connection test, select how many products to fetch (50, 100, 200, or 500) and click **Fetch Products**. ### Select and Import The preview screen shows all fetched products with checkboxes, images, names, categories, and prices. Use **Select All / Deselect All** to manage selection. Click **Import** to import the selected products. ### Shopify Import ### Enter Connection Details | Field | Description | |-------|-------------| | **Store Domain** | Your Shopify store domain (e.g., `mystore.myshopify.com` or just `mystore`) | | **Access Token** | Shopify Admin API access token (starts with `shpat_`). Click the eye icon to toggle visibility | **How to get an access token:** 1. Go to your Shopify admin panel 2. Navigate to Settings > Apps and sales channels > Develop apps 3. Click **Create an app** 4. Configure Admin API scopes: enable **read_products** 5. Install the app, then click **Reveal token once** 6. Copy the Admin API access token > **Warning:** The Shopify access token is only shown once when you first create it. Make sure to copy and save it securely. ### Test, Fetch, and Import The workflow is the same as WooCommerce: test the connection, fetch products, select which ones to import, and click Import. ### PrestaShop Import ### Enter Connection Details | Field | Description | |-------|-------------| | **Site URL** | Your PrestaShop store URL (e.g., `https://yourstore.com`) | | **Webservice Key** | A 32-character PrestaShop Webservice API key. Click the eye icon to toggle visibility | **How to get a Webservice key:** 1. Go to your PrestaShop admin panel 2. Navigate to Advanced Parameters > Webservice 3. Set **Enable webservice** to Yes 4. Click **Add new webservice key** 5. Generate a key and enable these permissions: - **products:** GET (View) - **categories:** GET (View) - **images:** GET (View) 6. Copy the 32-character key ### Test, Fetch, and Import The workflow is the same: test the connection, fetch products, select, and import. ### OpenCart Import ### Enter Connection Details | Field | Description | |-------|-------------| | **Site URL** | Your OpenCart store URL (e.g., `https://yourstore.com`) | | **REST API Key** | Your OpenCart REST API extension key. Click the eye icon to toggle visibility | > **Warning:** OpenCart does not include a REST API by default. You must first install a REST API extension from the OpenCart Marketplace (e.g., REST Admin, REST API Extension, or API Pro). **How to set up the REST API:** 1. Download a REST API extension from the OpenCart Marketplace 2. Install the extension from Extensions > Installer 3. Go to the extension settings 4. Create a new API Key 5. Enable Products access 6. Copy the API key ### Test, Fetch, and Import The workflow is the same: test the connection, fetch products, select, and import. ### Web Scraper Import The Web Scraper can import products from any website by analyzing its HTML structure. ### Enter the URL and Configure | Field | Description | |-------|-------------| | **Website URL** | The URL of a product listing page on any website | **Import Mode** -- Choose one of three modes: | Mode | Description | |------|-------------| | **First Page Only** | Analyzes only the provided URL. Best for a single category page | | **All Category Pages** | Follows pagination links to scrape multiple pages. Configure the maximum number of pages (3, 5, 10, or 20) | | **Entire Site (Sitemap)** | Uses the site's sitemap to discover product pages. Configure the maximum number of products (25, 50, 100, or 200) | **Additional option:** - **Fetch Complete Details** -- Check this to visit each individual product page for more accurate data extraction. This is slower but produces better results. ### Analyze the Page Click **Analyze Page**. The system scrapes the URL and attempts to discover products. ### Review Analysis Results The preview shows: | Metric | Description | |--------|-------------| | **Platform** | Detected e-commerce platform (if any) | | **Page Type** | Whether the URL is a product listing page or a single product page | | **Products Found** | Total number of products discovered | | **Selected** | Number currently selected for import | If the system has recommendations (e.g., "try using the sitemap mode for better results"), they appear in a yellow callout. ### Select and Import Review the discovered products (with images, names, descriptions, and prices), select the ones you want, and click **Import**. > **Info:** Web scraping results depend on the structure of the target website. Some websites may block automated access or have complex page layouts that reduce accuracy. For best results, use the platform-specific API importers when available. ## Post-Import AI Generation After every successful import (both file and API), a suggestion card appears recommending that you run AI content generation on the newly imported products. This generates: - Professional product descriptions - SEO metadata (title, description, image alt text) - AI embeddings for the chatbot Click **Generate Now** to navigate to the products page with auto-generation triggered, or click **Later** to do it manually from the products page. ## Exporting Products To export your product catalog: 1. Go to the main **Products** page 2. Click the **Export Excel** button in the header bar 3. An Excel file containing all your products is downloaded to your computer The export includes all product fields: name, price, description, category, stock status, SKU, and more. ## Product ZIP backup and restore For a catalog backup with available image files, use **Export Backup** rather than Export Excel. **Restore Backup** inspects a product ZIP and, after confirmation, replaces the current products. Read [Catalog Backup and Metadata Repair](https://directsale.ai/help/products/catalog-backup) before restoring; spreadsheet imports and ZIP restores have different effects. --- Source: https://directsale.ai/help/products/catalog-backup # Product Catalog Backup and Metadata Repair Use the header actions on **Dashboard > Products** to preserve or repair your catalog. **Export Excel** creates a spreadsheet for inspection or import mapping. **Export Backup** creates a product backup ZIP for **Restore Backup**. These files have different purposes and are not interchangeable. ## Export a product backup 1. Open Products and select **Export Backup**. 2. Watch the backup progress and wait for the ready result. 3. Save the downloaded ZIP securely outside the platform. 4. Keep the original archive intact. Record the store and date so you can identify it before restoring. The product archive contains product records, category assignments, variants, units, available product image files and supported search embeddings. Review any image or record warnings; a finished job can have warnings about material that could not be exported. This is a catalog backup, not a backup of customer conversations, orders, mailboxes or the VPS application. It is not encrypted with an email-backup password. ## Inspect and restore a product backup 1. Create a fresh backup of the current destination catalog first. 2. In Products, select **Restore Backup** and choose the unmodified product ZIP. 3. Wait for inspection. Review product, category and image counts, embeddings and the final product count. 4. Resolve any destination product/storage allowance error before continuing. 5. Read the replacement confirmation. This Products-page action **replaces all current products**; cancel if that is not intended. 6. Confirm once and follow progress through restoration. Review final warnings and failures. 7. Reload the product list and check sample prices, categories, variants, images and chatbot readiness. Restoration is not an automatic translation and does not increase your plan allowance. A failed restoration can leave partially restored data; preserve the original backup and error details before retrying. Do not start another restore while the first is still running. Do not rely on this action to restore the storefront theme, shared template library or customer history. For a connected VPS, verify the subsequent publication in Linked website on VPS before treating the public catalog as updated. Existing published website data is a separate copy; a successful catalog restore alone does not prove delivery to an unreachable VPS. ## Repair Metadata Use **Repair Metadata** after imports or AI analysis when product attributes contain usable physical details or category information that has not reached the corresponding fields. 1. Select Repair Metadata. The first check previews findings without applying them. 2. Review missing field updates, missing category assignments and conflicts. 3. Read the confirmation carefully: reported field conflicts can be overwritten from extracted attributes. 4. Confirm only when those extracted values are the intended source. 5. Review the report and compare a sample product's category, weight and dimensions. No findings means no changes are needed by this repair. Repair is not a new AI content generation request and does not translate descriptions. Hub-controlled fields cannot be changed by bypassing linked-store ownership. Preserve manually verified measurements before accepting conflicting extracted values. ## Choose the right backup tool | What you need to protect | Tool | | --- | --- | | Product catalog and its image files | Products > Export Backup / Restore Backup | | Supported central account data | Settings > Backup & Restore | | Persistent website data and private configuration on a VPS | Deploy > Website backup & removal | | Mailbox messages on a VPS | Email Hosting > Encrypted email backups | Use the matching restore workflow. Website version rollback changes the application version while keeping current website data; it is not a catalog restore. See [Account Backup & Restore](https://directsale.ai/help/settings/backup), [Self-Hosted Storefront](https://directsale.ai/help/storefront/self-hosted), [Self-Hosted Email](https://directsale.ai/help/storefront/self-hosted-email) and [Import & Export](https://directsale.ai/help/products/import-export). --- Source: https://directsale.ai/help/products/catalog-pdf # Import Products from a PDF Catalog Open **Products > Add Products > PDF Catalog** or the catalog-import entry offered in your panel. AI extracts draft product facts and original photos. It does not automatically publish the products. ## Before you start Use a readable PDF you are authorized to reuse. Review displayed file, product and upload limits; platform configuration can limit extraction. Confirm the consent that pages are sent to external AI services. Keep enough time to review private previews before their stated retention expires. ## Extract and review 1. Choose the PDF file and accept the extraction consent. 2. Select **Extract with AI** once. 3. Follow preparing pages, identifying products, reviewing models/source pages and reading details. 4. If the job waits to continue automatically, inspect its state rather than uploading the same catalog again. 5. When Ready for review, select the intended products. 6. Compare each name and Quick Product Info with the source pages. Multiple explicit model rows should be reviewed separately. 7. Inspect assigned original photos and exclude incorrect ones. A shared image may legitimately illustrate multiple variants. 8. Correct factual draft fields and confirm you have reviewed the selected information and image rights. 9. Select **Save inactive drafts** and inspect the imported/skipped counts. ## What is saved Only the selected name, Quick Product Info and original-photo selections are imported through this workflow. Products remain inactive, prices start at zero and stock is unavailable. Descriptions/backgrounds and the usual product AI processing are not automatically generated. Open Products afterward to set SKU/brand where needed, prices/currency, stock, categories, measurements and visibility. Run [AI Content](https://directsale.ai/help/products/ai-content) or [SEO + AI](https://directsale.ai/help/products/seo-ai) after correcting facts. Inactive drafts can be excluded from bulk-generation scopes. ## Stop and recover **Stop extraction** stops further requests once confirmed by the server. An already-sent request may finish and be charged. Closing the page is not Stop. Completed previews and reported usage remain; a stopped job does not automatically resume. Use **Recent catalogs** to reopen a job. **Retry unfinished work** is for an eligible interrupted job, not a promise to repeat every completed step. If the API connection is lost, use **Retry connection** and inspect the current job before uploading again. ## Verification and troubleshooting Compare source page references, model names, units and image assignments, especially tables with multiple models. If a product limit is reached, additional catalog products may be omitted. If no products are identified, check readability and whether the PDF is actually a catalog. A file-size issue, extraction limit and AI/provider failure are different problems; include the exact message when contacting Support. Private PDF sources/previews have limited retention, shown in the UI; saved product facts/images follow their own storage lifecycle. Save the reviewed drafts before relying on a temporary preview as your only copy. --- Source: https://directsale.ai/help/products/variants # Product Variants Product variants let you create different versions of a single product based on attributes like size, color, material, or any other differentiating property. Each variant can have its own SKU, price, cost price, and stock quantity. > **Info:** Variant management is only available for existing products. You must first create and save a product before you can add variants to it. ## Accessing the Variant Manager 1. Open the **Edit** dialog for any existing product (click the pencil icon in the Actions column) 2. Scroll to the bottom of the dialog to find the **Product Variants** card 3. Toggle the **Enabled/Disabled** switch to activate variant management ## Defining Variant Attributes Variant attributes define the dimensions along which your product varies. For example, a t-shirt might have attributes "Size" and "Color". ### Add an Attribute 1. In the **Variant Attributes** section, find the dashed-border area at the bottom 2. Enter an attribute name in the text field (e.g., "Color", "Size", "Material") 3. Once you start typing, a value input field appears below 4. Type a value and press **Enter** to add it (e.g., "Red", "Blue", "Green") 5. Each added value appears as a badge. Click the **X** on any badge to remove that value 6. Click **Add** to save the attribute with its values ### Add More Attributes Repeat the process to add additional attributes. For example: - **Color**: Red, Blue, Green - **Size**: S, M, L, XL > **Info:** Attribute names must be unique. The system prevents you from adding an attribute with a name that already exists (case-insensitive check). ### Edit Existing Attributes For each saved attribute: - **Add values** -- Use the input field below the existing values. Type a value and press **Enter** to add it - **Remove values** -- Click the **X** button on any value badge - **Delete the attribute** -- Click the trash icon next to the attribute name ### Save Attributes Click **Save Attributes** to persist your attribute definitions to the server. This saves the attribute names and their possible values but does not yet create individual variants. ## Generating Variants After defining your attributes and saving them, click **Generate All Combinations** to create variant entries for every possible combination of attribute values. For example, if you have: - **Color**: Red, Blue - **Size**: S, M, L The system generates 6 variants: Red/S, Red/M, Red/L, Blue/S, Blue/M, Blue/L. > **Warning:** Generating combinations creates new variant records on the server. If you already have variants, the system may create additional ones. Consider clearing existing variants first if you want to start fresh. ## Variants Table Once variants are generated, they appear in a table with the following columns: | Column | Description | |--------|-------------| | **Attributes** | The combination of attribute values for this variant (e.g., "Red / M") | | **SKU** | Editable text field for the Stock Keeping Unit. Each variant can have its own unique SKU | | **Price** | Editable number field. Leave empty to inherit the parent product's price. The parent product's price is shown as a placeholder | | **Cost** | Editable number field for the cost/purchase price of this variant | | **Stock** | Editable number field for the stock quantity of this variant | | **Active** | Checkbox to enable or disable the variant. Inactive variants are not shown to customers | | **Delete** | Click the trash icon to permanently delete a single variant | ### Editing Variants All fields in the variants table are editable inline. Simply click on a field and type the new value. When you make changes, a message appears at the bottom: **"You have unsaved changes"**. Click **Save All Changes** to persist all edits to the server in a single batch operation. ### Deleting a Variant Click the trash icon in the rightmost column of any variant row. The variant is deleted immediately from the server (no confirmation dialog). ## Workflow Example Here is a complete workflow for adding variants to a product: ### Open the Product for Editing Click the pencil icon on an existing product in the product table. ### Enable Variants Scroll to the **Product Variants** section and toggle the switch to **Enabled**. ### Define Attributes Add your attributes and their values. For example: - Attribute: **Storage** with values: 128GB, 256GB, 512GB - Attribute: **Color** with values: Black, Silver ### Save Attributes Click **Save Attributes** to persist the attribute definitions. ### Generate Combinations Click **Generate All Combinations**. The system creates 6 variants (128GB/Black, 128GB/Silver, 256GB/Black, 256GB/Silver, 512GB/Black, 512GB/Silver). ### Configure Each Variant Fill in the SKU, price, cost, and stock for each variant in the table. ### Save All Changes Click **Save All Changes** to persist all variant data. --- Source: https://directsale.ai/help/products/ai-content # AI Content Generation ## Description length and insufficient information AI product descriptions from Generate and SEO + AI, including Generate All, use a main-description range of **800–1500 words**. The preview counter excludes HTML tags, SEO metadata and independent FAQ fields. The original generation structure and style remain. Use useful, accurate, verified information; do not add invented product specifications or repetition to meet the minimum. When saved facts are sparse, the draft can add neutral buyer guidance about the identified product category, but it must not present that guidance as a specification of the exact product. For individual generation, **Insufficient information** displays follow-up questions only when the product or its basic purpose cannot be identified. Missing optional details such as warranty terms do not reject the whole draft. Add verified details to Quick Product Info and specifications before trying again. Length corrections reuse one reserved generation credit. Failed generation leaves existing product content unchanged and refunds that credit. Generate All's description report lists each product that could not meet the requirement and its reason, including the specific missing-information questions when available. **Insufficient information** is reserved for a product whose identity or basic purpose cannot be established; a recognizable product that remains below 800 words or repeats content after correction is reported as **Invalid description length**. Its previous content stays unchanged and other products continue processing. Stopping the batch prevents further length correction calls. Complete essential missing facts before starting another batch; no tenant approval prompt is added to the batch. DirectSale includes AI-powered tools that can automatically generate product descriptions, SEO metadata, and professional product images. These tools help you build a complete, polished product catalog quickly. ## Overview of AI Features | Feature | Description | Where to Access | |---------|-------------|----------------| | **AI Description Generation** | Generates a description, structured specifications and SEO metadata from product images and supplied facts | Product form and bulk generation from Products page | | **SEO + AI (Beta)** | Review keywords, Search Console evidence and a localized URL before generating and applying content | Separate button beside the original product generator | | **AI Background Replacement** | Removes product image backgrounds and replaces them with professional studio backgrounds | Product form (Add/Edit dialog) and bulk generation from Products page | | **AI Category Image** | Generates a representative image for a product category | Category edit form | ## Choose Generate, SEO + AI or Generate All | Action | Source and approval | Effect | | --- | --- | --- | | **Generate** in a product form | Current form information and uploaded images | Fills editable fields; review and Save the product | | **SEO + AI (Beta)** | Saved product information; you review the keyword/URL brief and preview | Save & apply writes the approved saved fields | | **Generate All > AI Descriptions** | Saved products in the selected scope | Automatically approves suggested keywords and URLs, generates content and saves each successful result without waiting for tenant approval | Generate All can change existing product URLs. Review the scope, language and warning before starting. It does not publish draft products. The separate Storefront SEO metadata batch preserves existing public slugs and descriptions; it is not the same action as Products > Generate All. ## AI Description Generation ### Monthly credits Generate All descriptions use SEO + AI with automatic keyword and URL approval. The complete workflow uses **one text credit per newly generated product preview**; keyword and URL suggestions are included. Generating 500 descriptions requires 500 available text credits. Regenerate existing allows overwriting but does not increase your allowance. **Generate All images and Replace BG share one monthly AI image allowance.** Each new generated image uses one credit from that same allowance; background previews also use it. Administrators configure it in Plans > Website Settings > Shared AI Images/mo (0 means unlimited). Uploading an existing photo is not AI generation and has a separate upload limit. Failed image generation releases its reserved credit. Monthly resets follow the date shown with your allowance. ### Per-Product Generation When adding or editing a product, the **AI Tools** section of the form includes a **Generate** button for description generation. ### Upload at Least One Product Image The AI analyzes your product images to generate the description. At least one image must be uploaded before the Generate button becomes active. ### Click Generate Click the **Generate** button in the AI Tools section. The AI processes the product images and any information you have already entered (product name, brand, etc.). ### Review Generated Content The AI generates and automatically fills in the following fields: | Field | Description | |-------|-------------| | **Product Description** | Editable HTML content with structured specifications and relevant sections; a negative-review or weaknesses section is not required | | **SEO Title** | An optimized page title for search engines (up to 70 characters) | | **SEO Description** | A meta description for search engine results (up to 160 characters) | | **Image Alt Text** | Descriptive alt text for the primary product image (up to 255 characters) | ### Edit if Needed All generated content is editable. Review and adjust the output as needed before saving the product. > **Info:** Providing additional product details (brand name, weight, dimensions) before generating gives the AI more context, resulting in more accurate and detailed descriptions. ### Bulk Description Generation Choose the scope (active products, imported drafts, or both) and the output language before starting. The batch keeps that language; changing panel language does not translate an already queued batch. Review the eligibility preview and skipped counts: missing required inputs, existing output when regeneration is off, scope filters and available monthly credits can exclude products. A zero eligible count means no work is queued. The coverage bars, such as 500 / 500 descriptions, count products with existing output; they are not remaining monthly credits. The usage labels beside Generate All show consumed credits and the allowance. For example, 100 / 100 text credits used leaves no description generation available, even with Regenerate existing checked. Image credits are separate from text credits. Read **tasks beyond the available quota** and completed/failed/skipped counts before retrying. A partial batch is not confirmation that every product was updated. Regenerate existing allows replacing eligible existing AI outputs. It does not bypass missing inputs, plan quotas or failures, and does not publish draft products. Stop ends the batch and removes pending work; already saved results remain. An external AI request already sent may finish, so Stop is not a promise of zero provider cost. Check final completed/failed/skipped counts rather than assuming every visible product was processed. You can generate descriptions for all products at once from the main Products page. ### Open the AI Content Card On the main Products page, locate the **AI Content** card below the header. This card displays: - A progress bar for **Descriptions** showing how many products already have AI-generated descriptions - A progress bar for **Images** showing how many products have AI-generated background images ### Configure Generation Options | Option | Description | |--------|-------------| | **Descriptions** checkbox | Check to include description generation in the batch | | **Images** checkbox | Check to include image background replacement in the batch | | **Regenerate existing** | Check to overwrite previously generated content. When unchecked, only products without existing AI content are processed | ### Start Generation Click **Generate All** to begin batch processing. If image generation is selected and styles have not been configured, an AI Style Dialog opens first (see below). ## Filling empty product details during description analysis When supported by supplied facts, the same analysis can return Brand, Weight (kg), Length/Width/Height (cm) and Product Usage Notes separately from the written description. The backend fills only blank or zero fields and preserves existing merchant values and externally controlled fields. It does not require a separate confirmation dialog. When several valid weights are documented, the largest is used. Packing dimensions take precedence over product dimensions when both are supplied; values are normalized to kilograms and centimeters. Usage Notes describes supported customer use cases in the selected output language, not invented compatibility. If the facts do not support a field, it can remain empty. Review all filled fields before relying on shipping calculations or recommendations. For keyword planning and the pilot's distinct Save & apply workflow, see [Product SEO + AI Beta](https://directsale.ai/help/products/seo-ai). ## AI Background Replacement Background replacement uses AI to remove the background of your product images and replace it with a clean, professional studio background. ### Per-Product Background Replacement In the product form (Add or Edit dialog), the AI Tools section includes a **Replace Bg** button. ### Select the source image and style In **AI Studio Background**, select the primary or additional photo to edit. Choose 1-5 offered styles, the background color when relevant and the product size percentage. These are style choices, not a request to edit five photos in one click. ### Click Replace BG Click **Replace BG** and wait for the selected photo's result. Each newly generated result uses one credit from the shared monthly AI image allowance. ### Review and save Review the gallery result and choose the intended primary image. This edits the form; **Save the product** to keep the image changes. Do not treat a preview or a consumed credit as proof that the product was saved. > **Warning:** AI description generation and background replacement are subject to your plan's quota limits. The remaining quota is displayed beneath each tool in the product form. ### Bulk Background Replacement When you trigger bulk generation from the AI Content card on the Products page with the **Images** checkbox enabled, an **AI Style Dialog** opens to let you configure the image style before processing begins. #### AI Style Dialog The style dialog contains the following sections: **Style Presets Grid:** - A grid of available style presets (e.g., floating mirror, studio backdrop, gradient, etc.) - Click a style to toggle it on or off - You can select between 1 and 5 styles. When multiple styles are selected, the system randomly applies one of the chosen styles to each product - Selected styles show a purple checkmark badge - A counter shows how many styles are currently selected **Background Color:** - Only appears when at least one selected style requires a color - Preset color buttons: Light Gray (#F5F5F5), Gray (#E8E8E8), Warm Gray (#F5F0EB), Dark (#1E293B), White (#FFFFFF) - A custom color picker for any other color - The current hex value is displayed **Preview:** - Select a product from the dropdown to preview the style - Click the **Preview** button to generate a before/after comparison - Each generated preview uses one credit from the shared monthly AI image allowance - The before image shows the original, and the after image shows the result with the selected style and color **Start Generation:** - Click **Start Generation** to begin processing all products with the configured styles - The dialog closes and processing begins in the background > **Info:** Preview, per-product Replace BG and Generate All use the same monthly AI image allowance. A successful generation uses one credit; a failed provider call that produces no usable image releases its reservation. ## AI Processing Pipeline After products are created or imported, they enter the AI processing pipeline: 1. **Queued** -- The product is waiting to be processed 2. **Processing** -- The AI is generating embeddings and analyzing the product 3. **Ready** -- The product is fully processed and available for the AI chatbot to recommend 4. **Error** -- Processing encountered an issue You can monitor the pipeline status in the **Chatbot Readiness** card on the main Products page. This card shows: | Metric | Description | |--------|-------------| | **Total Products** | Total number of products in your catalog | | **Ready** | Products fully processed and available to the chatbot | | **Pending** | Products waiting to be processed | | **Error** | Products where processing failed | | **Embedding Status** | How many products have vector embeddings for semantic search | If you see pending or error products, use the **Reprocess Pending** button to retry processing. You can also reprocess specific products by selecting them in the product table and using the **Reprocess AI** bulk action. ## Make AI images the primary product photos In **Products**, select the products (or use the select-all checkbox for the displayed list), then choose **Use AI image as primary** in the bulk toolbar. The action uses each product's saved AI output and creates no new image, so it consumes no AI image credits. The previous primary photo stays in the gallery. The result reports updates and skipped/failed products. Products without a saved AI image, products already using it, full galleries and images controlled by a linked store are skipped; concurrent edits require a retry. Successful changes use the normal website and sales-channel publication flow. --- Source: https://directsale.ai/help/products/seo-ai # Product SEO + AI Beta: Keywords, URL and Save & Apply SEO + AI (Beta) is a separate product-content workflow next to the original AI generation controls. It plans keywords before generating a description. The original generator remains available without the pilot. ## Before opening the pilot Save the product first. The pilot uses saved information, including Quick Product Info, specifications and product images; unsaved edits in the surrounding form are not its source. Supply accurate facts, brand and model spelling. You can also add clear photos of specification tables, labels or dimension diagrams as product images. Select the intended content and URL language in the pilot. ## Suggest keywords and URL Choose Suggest keywords & URL. The pilot analyzes readable saved primary and additional images, including specification photos, and considers that evidence alongside product facts, the tenant's SEO keyword records and available Search Console data. Review the proposed primary keyword, supporting phrases, URL segment, explanation and evidence status. The panel shows how many saved images were analyzed. Missing or failed images do not stop generation: the pilot uses readable images and saved information, or saved information alone when image analysis is unavailable. A non-blocking warning explains partial or unavailable analysis. Search Console shows observed performance for your connected site, not total market search volume. Not connected, unavailable or no matching rows does not mean no demand. Suggestions can use saved product facts; do not call them Search Console evidence when the panel says otherwise. ## Review and approve the brief Choose a specific primary phrase representing this product. Review conflicts with existing keyword owners and edit the phrase if another page owns it. Shared supporting terms are allowed; not every word must be unique across the store. Check facts, brand, model and native-script spelling in the proposed URL. Spaces become hyphens. The pilot fills an empty slug, but does not silently replace a nonempty live product URL. The preview displays the existing URL when present. Duplicate new URLs receive a suffix. A localized URL does not guarantee better ranking. ## Generate a preview Choose Approve brief & generate preview. Review description, specification table, headings and SEO metadata. Suggestions and previews do not change the product. The complete workflow uses one description credit per newly generated product preview; keyword and URL suggestions are included without another charge. Suggestions require available text credits. Reusing or applying an existing preview uses no additional credit. The main description must contain **800–1500 words** without repeated sections. The preview displays its word count and whether it is within the allowed range. Existing writing style, section structure and factual rules remain. SEO title, meta description, Selling Points, Usage Notes and Alt Text retain their separate limits and do not count toward this range. If **Insufficient information** appears, answer the displayed questions by adding verified details to Quick Product Info and specifications, save the product and request fresh suggestions. This status is reserved for a product whose identity or basic purpose cannot be established. A recognizable product that remains short or repetitive after correction is reported as **Invalid description length** instead. Optional missing details do not block the entire description. The assistant can add neutral category-level buyer guidance but must not present it as a specification of this exact product, invent facts, repeat claims or add generic filler to reach 800 words. Length corrections reuse the reserved description credit; up to two corrections are attempted before rejecting the result. Failed generation does not apply content and releases the reserved generation credit. Older previews below 800 words require a fresh generation before applying. Content direction is independent of the dashboard display language. Newly generated Persian, Arabic, Urdu and Hebrew descriptions retain right-to-left direction in headings, paragraphs, lists and specification tables when saved and reopened. Other supported content languages use left-to-right. Product text fields, including name, Quick Product Info, Selling Points, Usage Notes and SEO/Alt Text, follow their own text direction. Numbers and full URLs remain left-to-right, and model/SKU characters are not reversed. Existing descriptions are not automatically regenerated; generate a new preview to use the updated content-depth instructions. Readable specifications from images are used alongside Quick Product Info. Clearly visible features and supported benefits are included in the content and Selling Points. The preview also includes Product Usage Notes and Image Alt Text when there is supported information. Alt Text describes the primary image; if it is a specification sheet, it should describe the sheet, not pretend it is a product photograph. A product without images can still use saved text/specifications but does not receive new Image Alt Text. Review extracted numbers, units, variants and product-versus-packaging dimensions. Unreadable or contradictory details must not be guessed, and a photograph alone cannot establish quality, rated power, safety or compatibility. Keep specification images clear and complete. Image analysis uses the configured Image Model and is reused within the same preview session, without an additional description credit. Provider usage is recorded separately. Starting new suggestions analyzes the current images again. ## Save & apply to this product Choose Save & apply to this product and wait for confirmation. This writes the approved description, storefront description, SEO metadata and keyword assignment to the saved product. It also fills empty Selling Points, Product Usage Notes and Image Alt Text when available; existing values and fields controlled by a linked hub are preserved. These saved fields appear in the product form. No second Save is required for those applied fields. Other unsaved form edits still require ordinary Save. Name, price, inventory, images and Quick Product Info are not replaced. A custom visual product design can control the visible description; check that design if the storefront differs from the saved text. A refresh warning after a successful save is not a failed save: use the offered refresh retry rather than generating and paying again. ## Troubleshooting | Symptom | Action | | --- | --- | | Unsaved source changes | Save product information, then reopen the pilot. | | No Search Console evidence | Check connection/status; use facts without inventing search-volume claims. | | Keyword ownership conflict | Choose a specific primary phrase or review its current owner in SEO. | | Existing URL unchanged | Expected for a nonempty product slug. | | Preview exists but product unchanged | Click Save & apply and confirm success. Closing does not apply it. | | Additional fields are still empty | Generate a fresh preview after the update and check whether supported information was returned. Old previews do not acquire new fields just by applying them. | | Image cannot be read or image analysis is unavailable | Generation continues using readable images and saved facts, with a non-blocking warning. Review and apply the preview as usual. No visual facts or primary-image alt are invented for unread images. Correct images or ask the administrator to check the Image Model, then request fresh suggestions if you need image analysis. | | Provider request fails | Preserve edits and retry when available. A network error is not a content-policy verdict. | --- Source: https://directsale.ai/help/products/reviews # Reviews & Ratings The Reviews section lets you moderate customer reviews submitted through your storefront. You can approve or reject reviews, reply to customer feedback, and monitor overall review statistics. ## Reviews Dashboard ### Stats Cards At the top of the reviews page, five summary cards display your review metrics: | Card | Description | |------|-------------| | **Total Reviews** | The total number of reviews across all products | | **Pending** | Reviews waiting for your approval (shown in yellow) | | **Approved** | Reviews that have been approved and are visible on your storefront (shown in green) | | **Rejected** | Reviews that have been rejected and are hidden from customers (shown in red) | | **Average Rating** | The overall average star rating across all reviews | ### Filters Below the stats cards, a filter bar lets you narrow down the review list: | Filter | Options | |--------|---------| | **Search** | Search by customer name or product name | | **Status** | All, Pending, Approved, Rejected | | **Rating** | All, 5 Stars, 4 Stars, 3 Stars, 2 Stars, 1 Star | | **Clear** | A reset button appears when any filter is active. Click to clear all filters | ## Reviews Table The main table displays reviews with the following columns: | Column | Description | |--------|-------------| | **Product** | Product thumbnail image and name. Shows a placeholder icon if no image is available | | **Customer** | Customer name and email address | | **Rating** | Star rating displayed as filled/empty star characters | | **Review** | Review title (if provided) and content text (truncated to 80 characters). A "Verified" badge appears for verified purchase reviews. Click the row to expand and see the full content | | **Status** | Color-coded status badge: Pending (yellow), Approved (green), or Rejected (red) | | **Date** | The date the review was submitted | | **Actions** | Action buttons for managing the review (see below) | ### Expanding a Review Click on any review row to expand it and see: - The full review title and content (not truncated) - Star rating with numeric value (e.g., "4/5") - Verified purchase indicator (if applicable) - Order ID (if linked to an order) - Customer name and email - Any existing store reply - A button to write a new reply Click the row again to collapse it. ## Managing Reviews ### Approving a Review For reviews with **Pending** or **Rejected** status, a green checkmark button appears in the Actions column. 1. Click the **Approve** (green checkmark) button 2. The review status changes to **Approved** 3. The review becomes visible on your storefront 4. The stats cards update automatically ### Rejecting a Review For reviews with **Pending** or **Approved** status, a red X button appears in the Actions column. 1. Click the **Reject** (red X) button 2. The review status changes to **Rejected** 3. The review is hidden from your storefront 4. The stats cards update automatically ### Deleting a Review A trash icon button is always available in the Actions column regardless of status. 1. Click the **Delete** (trash) button 2. A confirmation prompt appears 3. Confirm to permanently delete the review > **Warning:** Deleting a review is permanent and cannot be undone. The review is removed from both the dashboard and the storefront. ## Replying to Reviews You can write a public reply to any customer review. Replies are displayed on your storefront below the customer's review. ### Expand the Review Click on the review row to expand it and reveal the full content. ### Write a Reply If no reply exists yet, click the **Reply** button at the bottom of the expanded section. A text area appears where you can type your response. ### Submit the Reply Click **Submit Reply** to save your reply. Click **Cancel** to discard. ### Editing a Reply If a reply already exists, it is displayed in a blue-bordered section within the expanded review. The reply shows: - The reply text - The name of the team member who wrote it (if available) - The date the reply was posted To edit the reply: 1. Click the **Edit** (pencil) icon next to the reply 2. The reply text loads into an editable text area 3. Make your changes and click **Submit Reply** ### Deleting a Reply 1. Click the **Delete** (trash) icon next to the reply 2. A confirmation prompt appears 3. Confirm to remove the reply ## Reviews on a self-hosted website Test submission on a public, published product page. Editor/private previews disable review submission. A new review can wait for moderation; a successful submission does not mean it is immediately displayed. Approve it in **Reviews**, then confirm the published review and reply on the public product. For a VPS website, review support depends on the installed application version. Use Website updates for an older installation, and check Linked website on VPS for delivery of moderation changes. If submission fails, preserve the product URL and sanitized error rather than submitting repeatedly. Website return-to-platform transfer imports supported VPS-only reviews; deleting an installation is a separate operation. ## Verified Purchase Badge Reviews that are linked to a confirmed order display a **Verified** badge (shield icon) next to the review content. This badge helps customers distinguish reviews from actual buyers. ## Pagination Reviews are displayed 10 per page. Use the **Previous** and **Next** buttons at the bottom of the page to navigate between pages. The current page and total page count are displayed between the navigation buttons. --- Source: https://directsale.ai/help/products/settings # Product Settings The Product Settings page lets you configure how similar products are recommended on your storefront and how product images are processed with AI background replacement. ## Similar Products The **Similar Products** card controls how product recommendations are generated and displayed on your storefront product pages. ### Recommendation Mode Select one of the following modes from the dropdown: | Mode | Description | |------|-------------| | **Off** | No similar product recommendations are shown on product pages | | **Vector Similarity** | Uses AI-generated vector embeddings to find products that are semantically similar. This considers product descriptions, features, and categories to find the most relevant matches | | **Hybrid** | Combines vector similarity with additional signals such as category matching and price proximity for more diverse recommendations | When you select a mode, the change is saved automatically. A brief saving indicator appears, followed by a success message. > **Info:** Vector similarity requires products to be fully processed through the AI pipeline (status: Ready). Products that have not been processed yet will not appear in similarity results. ## Photo Settings The **Photo Settings** card lets you configure the default AI image style for background replacement across your entire product catalog. This is the same technology used in the per-product and bulk background replacement features, but configured here as your store-wide default. ### Image Style Presets A grid displays all available AI image style presets. Each preset card shows: - **Style name** (e.g., "Floating Mirror", "Studio Backdrop", "Gradient") - **Description** of the visual effect - A purple checkmark badge when selected Click a preset to toggle it on or off. You can select between **1 and 5** styles: - When multiple styles are selected, the system randomly assigns one of the chosen styles to each product during batch processing - You must always have at least 1 style selected A counter below the grid shows how many styles are currently selected (e.g., "2 styles selected"). ### Brand Background Color When at least one selected style requires a background color, the color picker section appears: **Preset colors:** | Color | Hex Code | |-------|----------| | Light Gray | #F5F5F5 | | Gray | #E8E8E8 | | Warm Gray | #F5F0EB | | Dark Slate | #1E293B | | White | #FFFFFF | - Click any preset color circle to select it - Use the **custom color picker** (the rightmost circle) to choose any color - The selected hex code is displayed next to the color options ### Quota Display At the top of the Photo Settings card, badges show your current usage: | Badge | Description | |-------|-------------| | **AI Images Used** | Shows total AI image generations used by previews, per-product Replace BG and Generate All out of one shared monthly allowance | | **Apply Free Remaining** | Shows the separate free batch-application allowance where offered; it does not grant extra AI image credits | ### Test Preview Before applying your style to all products, you can test it on a single product to see the results. ### Select a Product Choose a product from the dropdown. Only products with images are listed. ### Generate Preview Click **Test Background**. The system processes the product's primary image with the selected style and color settings. ### Compare Results A before/after comparison appears below: - **Before** -- The original product image - **After** -- The image with the AI-generated background applied The remaining shared AI image allowance is displayed below the button. ### Apply to All Products Once you are satisfied with the style and color settings, you can apply them to your entire product catalog. ### Click Apply to All Click the **Apply to All** button in the bottom section of the Photo Settings card. ### Confirm A confirmation dialog appears warning that this will process all product images. Click **Yes, Apply to All** to proceed or **Cancel** to go back. ### Processing The action queues background work for active products with source images. Its initial success means the work was queued, not that every image finished. Follow the batch status and inspect actual products. Every newly generated result still needs a credit from the shared AI image allowance; a free batch application does not bypass that allowance. The system also saves your selected style and color as the brand default settings for future use. > **Warning:** Applying background replacement to all products may take some time depending on the number of products in your catalog. The process runs in the background and you can continue using the dashboard while it completes. > **Info:** Check the shared AI image usage and batch status before starting. A catalog of 500 products does not imply 500 credits remain. For explicit scope, regeneration options and completed/failed counts, use [Products > Generate All](https://directsale.ai/help/products/ai-content). --- Source: https://directsale.ai/help/products/web-import # Importing Products from a Website Use **Web Scraper** or **Scraper1**, where available, to discover product information from a website you are authorized to use. For an owned store with an available API, [Store API Import](https://directsale.ai/help/products/import-export) can be more appropriate. ## Before you start Confirm permission to reuse the content and photos. Use a public product/category URL; do not supply an administrator URL, login cookies, tokens or private network addresses. Website layouts and access rules affect extraction. A discovery result is not verified stock or a license to republish content. ## Web Scraper workflow 1. Open Web Scraper and enter the intended category URL. 2. Review the extraction options/limits and start scraping. 3. Inspect returned products and select only the intended records. 4. Compare names, source URLs, variants and prices against the source. 5. Use the save action once, then inspect the saved Products list. 6. If the page shows pending AI processing, inspect its status before using **Reprocess pending**. ## Scraper1 workflow 1. Enter the supported website input and maximum product count. 2. Start analysis and inspect the reported discovery stages and warnings. 3. Review deduplicated product results; select the records you want. 4. Import the selected products. 5. Open Products to review descriptions, currency, stock, images and active status before selling. Scraper1 may try public APIs, sitemaps and listing-page analysis. It does not guarantee every product or variant will be discovered. These are distinct screens; options visible in one are not necessarily present in the other. ## Verification and troubleshooting If no products are returned, check URL type, public access and whether the page actually lists products. Do not attempt to bypass login, access restrictions or an anti-bot challenge. For partial results, narrow the source or use an authorized CSV/API/PDF workflow. After an interrupted save, search Products before importing the same set again. Keep the source language and units accurate. Run AI description generation only after correcting the imported facts; AI cannot restore missing source specifications reliably. --- Source: https://directsale.ai/help/products/storefront-display # Product Storefront Display and Custom Product Pages Use the product's storefront/page-builder entry to control how an individual product is presented. This is separate from editing the catalog record used for price, stock and AI recommendations. ## Before you start Save the product first. Review its name, descriptions, SEO, variants, images and commercial data. Decide whether you want the normal product template or a custom visual page. A custom layout can display content different from the normal description. ## Configure and inspect 1. Open **Products > Storefront** or the page-builder action for the selected product, as offered in your panel. 2. Review storefront-specific content/visibility controls. 3. Open the custom page editor when a product-specific layout is needed. 4. Edit blocks and formatting using the editor's supported controls. 5. Save the editor and use the authorized storefront preview. 6. Compare desktop/mobile output, links, images and the buy/variant controls. 7. Verify the actual product price and stock still come from the intended catalog/central source. ## AI content and custom layouts **Save & apply** in the product SEO pilot updates supported saved description/SEO fields. It does not necessarily replace independently authored visual blocks. If an AI description appears saved in Products but not on the site, check whether a custom product page overrides its presentation. See [Product SEO + AI](https://directsale.ai/help/products/seo-ai) and [Visual Editor](https://directsale.ai/help/storefront/visual-editor). A product active switch or editor Save does not publish a storefront without the required domain/publication conditions. ## Save and share a product layout Use **Save as template** beside Template library in the product Section Editor. Saving adds a named library entry; it does not assign it to products. Select it at **Storefront > Design > Default product content template** for inheriting products, or use **Page source and help > Layout source** to link a specific product and then **Publish layout**. Product-specific and category overrides take priority over the store default. Read [Section Templates](https://directsale.ai/help/storefront/section-templates) for the complete save, copy, link, update and deletion workflow. To place specifications below the description, keep them in separate top-level sections. Two blocks inside one Row / Columns section can display beside each other on desktop. Check the active Layout source before assuming a different product uses the same saved layout. ## Verification and troubleshooting Wrong text: inspect catalog description, storefront description and custom page separately. Missing product: check active/visibility settings, category, stock policy and the correct tenant preview/domain. Broken layout: check responsive settings and unsupported HTML. Preserve a known-good layout before replacing blocks. Use [Domain and Publication](https://directsale.ai/help/storefront/domain) for preview versus public access. --- Source: https://directsale.ai/help/orders/index # Orders The **Orders** section is your central hub for managing every order placed through your store. Whether orders come from your storefront, chatbot, external marketplaces like Amazon and eBay, or integrated platforms such as Shopify and WooCommerce, they all appear here in a unified view. ## Accessing Orders To access the Orders page, click **Orders** in the left sidebar of your dashboard. The page loads with a statistics overview at the top, followed by a filterable, searchable table of all your orders. ## Order Statistics Dashboard At the top of the Orders page, you will see six statistics cards that give you an at-a-glance summary of your order activity. These statistics update in real time as you receive and process orders. | Stat Card | Description | |-----------|-------------| | **Total Orders** | The total number of orders across all statuses and all time. | | **Pending** | Orders that have been placed but not yet confirmed by you. These require your attention. | | **Confirmed** | Orders you have confirmed and acknowledged but have not yet begun processing. | | **Shipped** | Orders that have been shipped and are on their way to customers. | | **Delivered** | Orders that have been successfully delivered to customers. | | **Revenue** | The total revenue generated from all orders, displayed in your store's currency. | > **Info:** The statistics cards reflect **all-time** data for your store, not just the orders visible on the current page. They provide a cumulative overview regardless of any active filters. ## Order Sources DirectSale aggregates orders from multiple sales channels. Each order is tagged with a source badge so you can quickly see where it came from. | Source | Description | |--------|-------------| | **Chatbot** | Orders placed through your AI chatbot widget embedded on your website. | | **Store** | Orders placed through your DirectSale storefront. | | **Shopify** | Orders synced from your connected Shopify store. | | **WooCommerce** | Orders synced from your connected WooCommerce store. | | **PrestaShop** | Orders synced from your connected PrestaShop store. | | **OpenCart** | Orders synced from your connected OpenCart store. | | **Amazon** | Orders synced from your connected Amazon seller account. | | **eBay** | Orders synced from your connected eBay seller account. | | **API** | Orders created programmatically through the DirectSale API. | > **Info:** To receive orders from external platforms like Shopify, WooCommerce, Amazon, or eBay, you must first set up the integration in the [Multichannel](https://directsale.ai/help/multichannel/index) section of your dashboard. ## Understanding Order Lifecycle Every order in the system goes through a series of statuses. Understanding this lifecycle helps you manage orders efficiently. ### Order Status Flow ``` PENDING --> CONFIRMED --> PROCESSING --> SHIPPED --> DELIVERED | | | v v v CANCELLED CANCELLED CANCELLED ``` - **Pending**: The order has been placed and is waiting for your review. - **Confirmed**: You have acknowledged and accepted the order. - **Processing**: The order is being prepared (items being picked, packed, etc.). - **Shipped**: The order has been handed off to a shipping carrier. - **Delivered**: The order has been delivered to the customer. - **Cancelled**: The order was cancelled (can happen from Pending, Confirmed, or Processing states). ### Payment Statuses | Status | Description | |--------|-------------| | **Unpaid** | No payment has been received for this order. | | **Pending** | Payment is being processed (e.g., awaiting bank confirmation). | | **Paid** | Payment has been successfully received. | | **Failed** | The payment attempt failed. | | **Refunded** | The payment was refunded to the customer. | | **Cancelled** | The payment was cancelled. | ### Shipping Statuses | Status | Description | |--------|-------------| | **Not Shipped** | The order has not been shipped yet. | | **Preparing** | The order is being prepared for shipping. | | **Shipped** | The order has been shipped. | | **In Transit** | The order is in transit to the customer. | | **Delivered** | The order has been delivered. | | **Returned** | The order was returned by the customer or carrier. | ## What's Next - **[Managing Orders](https://directsale.ai/help/orders/managing-orders)** -- Learn how to search, filter, and work with your order list. - **[Order Fulfillment](https://directsale.ai/help/orders/fulfillment)** -- Learn how to fulfill orders, add tracking information, and manage shipments. --- Source: https://directsale.ai/help/orders/managing-orders # Managing Orders The Orders list page provides a powerful set of tools for searching, filtering, and managing your orders. This guide covers everything you need to know about working with the order list. ## The Orders Table Below the statistics cards on the Orders page, you will find the main orders table. Each row represents a single order and displays the following columns: | Column | Description | |--------|-------------| | **Order #** | The unique order number (e.g., `ORD-00042`). Clicking the order number or the row navigates you to the order detail page. The order number is displayed as a clickable blue link. | | **Source** | A color-coded badge indicating where the order originated (Chatbot, Store, Shopify, Amazon, etc.). | | **Customer** | The customer's name and email address. If the customer did not provide a name, it displays "Guest". | | **Total** | The total order amount, formatted in your store's currency. | | **Status** | The current order status badge (Pending, Confirmed, Processing, Shipped, Delivered, Cancelled, or Refunded). | | **Payment** | The current payment status badge (Unpaid, Pending, Paid, Failed, Refunded, or Cancelled). | | **Shipping** | The current shipping status badge (Not Shipped, Preparing, Shipped, In Transit, Delivered, or Returned). | | **Date** | The date and time the order was placed, formatted according to your locale settings. | | **Actions** | Action buttons for the order (View and Fulfill). | ### Action Buttons Each order row has up to two action buttons in the **Actions** column: - **View** (eye icon) -- Opens the order detail page where you can see the full order information, manage its status, and handle shipping. - **Fulfill** (package-check icon) -- Only appears for orders with a shipping status of "Not Shipped" that have not been cancelled. Opens the quick fulfillment modal directly from the list. > **Info:** You can also click anywhere on the order row itself to navigate to the order detail page. The entire row is clickable. ## Searching Orders At the top of the orders table, there is a search bar where you can search by: - **Order number** -- Search by the full or partial order number. - **Customer name** -- Search by the customer's name. - **Customer email** -- Search by the customer's email address. - **Customer phone** -- Search by the customer's phone number. Simply type your search term into the search field. The results update automatically as you type -- there is no need to press Enter. The search is performed server-side, so it works across all your orders, not just the ones currently visible on the page. ## Filtering Orders The Orders page provides five different filter dropdowns and a date range picker, allowing you to narrow down the orders list precisely. ### Available Filters | Filter | Options | Description | |--------|---------|-------------| | **Source** | All Sources, Chatbot, Store, Shopify, WooCommerce, PrestaShop, OpenCart, Amazon, eBay, API | Filter orders by the channel they originated from. | | **Order Status** | All Statuses, Pending, Confirmed, Processing, Shipped, Delivered, Cancelled, Refunded | Filter by the current order processing status. | | **Payment Status** | All Payments, Pending, Paid, Failed, Refunded, Cancelled | Filter by payment status. | | **Shipping Status** | All Shipping, Not Shipped, Preparing, Shipped, In Transit, Delivered, Returned | Filter by shipping/delivery status. | | **Date Range** | Start date and End date pickers | Filter orders placed within a specific date range. | ### Using Filters ### Select a Filter Click on any of the filter dropdown menus (Source, Order Status, Payment Status, or Shipping Status) and select the value you want to filter by. ### Combine Multiple Filters You can combine filters to create very specific views. For example, you can filter for orders that are: - Source: **Storefront** - Status: **Confirmed** - Payment: **Paid** - Shipping: **Not Shipped** This combination would show you all paid storefront orders that are confirmed but have not been shipped yet -- perfect for identifying orders ready for fulfillment. ### Filter by Date Range Use the two date input fields to specify a start date and an end date. Only orders placed within this range will be shown. You can use the date range in combination with other filters. ### Clear Filters When you have active filters applied, a **Clear** button appears next to the filter controls. Click it to reset all filters and the search field back to their defaults, showing all orders again. > **Info:** Changing any filter automatically resets you to page 1 of the results. This ensures you always see the most relevant results starting from the beginning. ## Pagination The orders table displays **10 orders per page**. When you have more than 10 orders matching your current search and filter criteria, pagination controls appear at the bottom of the table. - Use the **left arrow** button to go to the previous page. - Use the **right arrow** button to go to the next page. - The current page number and total number of pages are displayed between the arrow buttons (e.g., "Page 1 of 5"). The previous-page button is disabled when you are on page 1, and the next-page button is disabled when you are on the last page. ## Quick Fulfillment from the Order List For orders that have not been shipped yet and are not cancelled, you can quickly mark them as shipped directly from the orders list without navigating to the order detail page. ### Click the Fulfill Button In the **Actions** column of the order row, click the **Fulfill** button (the package-check icon in blue). This opens the fulfillment modal. ### Select a Carrier In the modal, select a shipping carrier from the dropdown. The available carriers are: | Carrier | Description | |---------|-------------| | Post | Standard postal service | | Tipax | Tipax courier service | | Chapar | Chapar delivery service | | Snapp Express | Snapp Express same-day delivery | | DHL | DHL international shipping | | FedEx | FedEx shipping | | UPS | UPS shipping | | Other | Any other carrier not listed | ### Enter a Tracking Number (Optional) If you have a tracking number from the carrier, enter it in the **Tracking Number** field. This field is optional -- you can fulfill the order without a tracking number if one is not available yet. ### Confirm Fulfillment Click the **Mark as Shipped** button to complete the fulfillment. The order's shipping status will be updated, and the order list and statistics will refresh automatically. ### Cancel If you change your mind, click **Cancel** or click outside the modal to close it without making changes. > **Info:** For more advanced fulfillment options including smart carrier rate comparison, automatic fulfillment, manual shipment creation with tracking URL previews, and estimated delivery dates, use the full [Order Detail page](https://directsale.ai/help/orders/fulfillment). ## Status Badge Colors The dashboard uses color-coded badges to help you quickly identify the state of each order at a glance. ### Order Status Colors | Status | Color | |--------|-------| | Pending | Yellow | | Confirmed | Blue | | Processing | Indigo | | Shipped | Purple | | Delivered | Green | | Cancelled | Gray | | Refunded | Orange | ### Payment Status Colors | Status | Color | |--------|-------| | Pending / Unpaid | Yellow | | Paid | Green | | Failed | Red | | Refunded | Orange | | Cancelled | Gray | ### Shipping Status Colors | Status | Color | |--------|-------| | Not Shipped | Gray | | Preparing | Yellow | | Shipped | Blue | | In Transit | Indigo | | Delivered | Green | | Returned | Red | ## Tips for Efficient Order Management - **Process pending orders first**: Use the Order Status filter set to "Pending" to see orders that need your attention. - **Find fulfillment-ready orders**: Combine Payment Status "Paid" with Shipping Status "Not Shipped" to find orders that are paid but not yet shipped. - **Track marketplace orders**: Use the Source filter to isolate orders from a specific channel (e.g., Amazon or Shopify) for reconciliation. - **Use date ranges for reporting**: Filter by a specific date range to review orders for a particular period, useful for end-of-month or end-of-week processing. - **Monitor failed payments**: Filter by Payment Status "Failed" to identify orders with payment issues that may need customer follow-up. --- Source: https://directsale.ai/help/orders/fulfillment # Order Fulfillment This guide covers the full order detail page and all the tools available for fulfilling orders, managing shipments, tracking deliveries, and handling the order lifecycle. ## The Order Detail Page To access the detail page for any order, click on the order row in the orders list, or click the **View** (eye icon) button in the Actions column. The order detail page provides a comprehensive view of everything related to that order. At the top of the page, you will see: - A **Back to Orders** link to return to the orders list. - The **order number** as the page title (e.g., "Order #ORD-00042"). - The **order date**, **customer name**, and **order source** displayed below the title. - Three **status badges** showing the current Order Status, Payment Status, and Shipping Status. - A **Create Invoice** button that generates an accounting invoice from the order and navigates you to the Sales Invoices page. ## Changing Order Status Below the order header, you will find the **Actions** bar. This bar shows the available status transitions for the current order. The available actions change depending on the order's current status. ### Status Transition Map | Current Status | Available Actions | |---------------|-------------------| | **Pending** | Confirm Order, Cancel Order | | **Confirmed** | Start Processing, Cancel Order | | **Processing** | Mark as Shipped, Cancel Order | | **Shipped** | Mark as Delivered | | **Delivered** | *(No further actions)* | | **Cancelled** | *(No further actions)* | ### Review the Order Before changing the order status, review the order items, customer information, and payment status on the detail page. ### Click the Appropriate Action Button Click the action button that corresponds to the next step in the order's lifecycle. For example, click **Confirm Order** to move a pending order to the Confirmed status. ### Wait for Confirmation The button will show a loading spinner while the status is being updated. Once complete, the page will refresh with the updated status, and the action bar will display the new set of available actions. > **Info:** Cancelling an order is a significant action. Once an order is cancelled, no further status transitions are available. Make sure the order genuinely needs to be cancelled before proceeding. ## Order Items The **Order Items** section displays a table of all products included in the order. Each item row shows: | Column | Description | |--------|-------------| | **Product** | The product name, with a thumbnail image if available. | | **Qty** | The quantity ordered. | | **Unit Price** | The price per unit of the product. | | **Total** | The total price for that line item (unit price multiplied by quantity). | ## Shipping Management The **Shipping Management** section is where you handle all shipping and delivery operations for the order. This section adapts its interface depending on whether shipments have already been created for the order. ### Current Shipping Status At the top of the Shipping Management section, a status bar displays: - **Current Status** -- The current shipping status badge. - **Tracking Code** -- The tracking code, if one has been assigned. - **Carrier** -- The name of the shipping carrier. - **Track** -- A clickable link that opens the carrier's tracking page in a new browser tab (only appears when a tracking URL is available). ### When No Shipments Exist If the order has no shipments yet, the Shipping Management section presents two fulfillment options: **Smart Fulfillment** and **Manual Shipment**. #### Smart Fulfillment Smart Fulfillment integrates with your configured shipping carriers to automatically fetch rates and fulfill orders with minimal effort. ### Get Shipping Rates Click the **Get Shipping Rates** button to fetch real-time shipping rates from all your configured carriers. The system will query each active carrier and return available shipping options. ### Compare Rates A comparison table appears showing all available shipping options sorted by price. Each row displays: | Column | Description | |--------|-------------| | **Carrier** | The carrier name. The cheapest option is highlighted with a green "Cheapest" badge. | | **Service** | The service type or name (e.g., "Express", "Standard", "Ground"). | | **Price** | The shipping cost for this option, displayed in the order's currency. | | **Delivery** | The estimated delivery time in days (e.g., "1 day", "3 days"). Shows a dash if no estimate is available. | ### Select a Rate Click the **Select** button next to the shipping option you want to use. The cheapest option uses a primary button style to stand out visually. Once selected, the system will create the shipment with that carrier and service, and the order will be automatically updated. ### Or Use Auto Fulfill Alternatively, if you do not need to compare rates, click the **Auto Fulfill (Cheapest)** button. This skips the rate comparison step entirely and automatically fulfills the order using the cheapest available shipping option from your configured carriers. > **Info:** Smart Fulfillment requires that you have at least one active shipping carrier configured in the [Shipping](https://directsale.ai/help/shipping/index) section of your dashboard. If no carriers are configured, the "Get Shipping Rates" button will return a message saying no rates are available. #### Manual Shipment If you prefer to enter shipping details manually (for example, if you are using a carrier not integrated with the platform, or if you already have a tracking number), you can expand the manual shipment form. ### Expand the Manual Form Click the **Manual Shipment (enter tracking code manually)** toggle to expand the form. ### Select a Carrier Choose a shipping carrier from the **Carrier** dropdown. The dropdown lists all carriers configured for your store, showing the carrier name and its region (e.g., "DHL (International)", "FedEx (North America)"). ### Enter the Tracking Code Type the tracking code you received from the carrier into the **Tracking Code** field. ### Set an Estimated Delivery Date (Optional) Use the **Estimated Delivery** date picker to set the expected delivery date. This is optional but helps customers know when to expect their package. ### Review the Tracking URL Preview When you select a carrier and enter a tracking code, a **Tracking URL Preview** appears below the form fields. This shows you the exact tracking URL that will be generated for the customer using the carrier's tracking URL template. You can click the preview link to verify it works correctly. ### Create the Shipment Click the **Create Shipment** button to save the shipment. The button is disabled until you have selected a carrier and entered a tracking code. Once created, the shipping status is updated, and the shipment appears in the shipments list on the page. ### When Shipments Exist Once one or more shipments have been created for an order, the Shipping Management section displays a list of all shipments with full details. #### Shipment Details Each shipment card shows: - **Carrier name** and **service type**. - **Tracking code** displayed in a monospaced font for easy copying. - **Shipping cost** if available. - **Current status badge** showing the shipment's delivery progress. - **Status update dropdown** for transitioning the shipment to its next status. - **Download Label** button (if a shipping label URL is available). - **Track Shipment** link (if a tracking URL is available) that opens the carrier's tracking page in a new tab. - **Timestamps** showing when the shipment was created, shipped, delivered, and the estimated delivery date. #### Shipment Status Transitions Each shipment has its own lifecycle separate from the main order status. You can update a shipment's status using the dropdown that appears next to the status badge. | Current Shipment Status | Available Transitions | |------------------------|----------------------| | **Label Created** | Picked Up, Exception | | **Picked Up** | In Transit, Exception | | **In Transit** | Out for Delivery, Delivered, Exception | | **Out for Delivery** | Delivered, Exception | | **Exception** | In Transit, Returned | | **Delivered** | *(No further transitions)* | | **Returned** | *(No further transitions)* | The shipment status labels are: | Status | Description | |--------|-------------| | **Label Created** | A shipping label has been generated but the package has not been picked up yet. | | **Picked Up** | The carrier has picked up the package. | | **In Transit** | The package is in transit between facilities. | | **Out for Delivery** | The package is out for delivery to the customer's address. | | **Delivered** | The package has been delivered to the customer. | | **Exception** | There is an issue with the delivery (e.g., failed delivery attempt, address problem). | | **Returned** | The package has been returned to the sender. | #### Shipment Status History Each shipment maintains a timeline of all status changes. This history is displayed below the shipment details as a vertical timeline showing: - The **status** at each point in time. - The **date and time** of the status change. - The **location** where the status change occurred (if available, e.g., "Distribution Center, Los Angeles"). - A **description** with additional details (if available). ## Customer Information The **Customer** card on the right side of the order detail page shows: | Field | Description | |-------|-------------| | **Name** | The customer's full name. | | **Email** | The customer's email address, displayed as a clickable `mailto:` link. | | **Phone** | The customer's phone number. | | **Delivery Address** | The full delivery address, if provided. Displayed with a map pin icon. | | **Notes** | Any notes or special instructions the customer included with the order, displayed in italic text. | ## Order Summary The **Order Summary** card provides a complete financial breakdown of the order: | Line Item | Description | |-----------|-------------| | **Subtotal** | The sum of all item prices before discounts, tax, and shipping. | | **Discount** | Any discount applied to the order (displayed in red with a minus sign). Only shown if greater than zero. | | **Tax** | Tax amount applied to the order. Only shown if greater than zero. | | **Shipping** | The shipping cost. Displays "Free" if the shipping cost is zero. | | **Total** | The final total amount the customer was charged, displayed in bold with a separator line above it. | Below the price breakdown, additional payment details are shown: | Field | Description | |-------|-------------| | **Payment Method** | The payment gateway used (e.g., Stripe, PayPal, Cash on Delivery). | | **Payment Status** | The current payment status badge. | | **Reference** | The payment reference or transaction ID from the payment gateway, displayed in monospaced font. Only shown if available. | | **Paid At** | The date and time the payment was received. Only shown if the order has been paid. | | **Gateway Fee** | The fee charged by the payment gateway, displayed in red with a minus sign. Only shown if greater than zero. | | **Net Received** | The actual amount received after deducting the gateway fee, displayed in green. Only shown if greater than zero. | ## Creating an Invoice from an Order You can generate an accounting invoice directly from any order. ### Open the Order Detail Page Navigate to the order you want to create an invoice for. ### Click Create Invoice Click the **Create Invoice** button in the order header area (next to the status badges). The button displays a document icon. ### Wait for Processing The button will show a loading spinner while the invoice is being created. ### Review the Invoice After the invoice is created, you will be automatically redirected to the **Sales Invoices** page in the [Accounting](https://directsale.ai/help/accounting/index) section where you can review and manage the new invoice. > **Info:** The Create Invoice feature generates a sales invoice pre-populated with the order's items, customer information, and financial details. This helps you keep your accounting records synchronized with your order data. ## Notifications Log If notifications have been sent for an order (such as order confirmation emails, shipping update SMS messages, or delivery notifications), a **Notifications Log** section appears below the Shipping Management section. Each notification entry shows: | Field | Description | |-------|-------------| | **Type** | The notification type (e.g., "order confirmation", "order shipped", "order delivered"). | | **Channel** | The channel used to send the notification (email, SMS, or WhatsApp) and the recipient address. | | **Subject** | The email subject line (for email notifications). | | **Status** | A badge indicating whether the notification was sent, delivered, failed, or is still pending. | | **Timestamp** | When the notification was sent or attempted. | | **Failure Reason** | If a notification failed, the reason is displayed in red text. | The notification status is indicated by icons: - A **green checkmark** for sent or delivered notifications. - A **red X** for failed notifications. - A **yellow clock** for pending notifications. ## Best Practices - **Confirm orders promptly**: Customers appreciate quick confirmation. Move orders from Pending to Confirmed as soon as you have verified the order details. - **Use Smart Fulfillment when possible**: The rate comparison feature helps you choose the most cost-effective shipping option automatically. - **Always add tracking codes**: Providing tracking information improves customer trust and reduces "where is my order?" inquiries. - **Monitor shipment exceptions**: Regularly check for shipments with an "Exception" status and take corrective action (contact the carrier, notify the customer, or reroute the package). - **Create invoices for accounting**: Use the Create Invoice feature to keep your accounting records in sync without manual data entry. - **Review the notifications log**: Check whether order confirmation and shipping notification emails were successfully delivered, especially for high-value orders. --- Source: https://directsale.ai/help/accounting/index # Accounting Overview The Accounting module is the financial backbone of your DirectSale platform. It provides a comprehensive suite of tools to manage invoices, track expenses, reconcile bank statements, maintain your chart of accounts, generate financial reports, and much more -- all within a multi-tenant environment where each business operates independently. ## Accessing the Accounting Module Navigate to **Dashboard > Accounting** from the main sidebar. The accounting section opens to the **Overview** dashboard by default. ## Navigation Structure The Accounting module is organized into seven main tabs, each containing related sub-sections: | Tab | Sub-sections | Description | |-----|-------------|-------------| | **Dashboard** | -- | Financial summary, revenue trends, expense breakdown, top sellers, low stock alerts | | **Invoices** | Sales Invoices, Purchase Invoices, Credit Notes, Debit Notes, Recurring, Installments, Contacts, Products | Invoice operations and contact management | | **Treasury** | Treasury, Reconciliation, Expenses, Payment Instruments, Receipts & Payments | Cash, bank, instrument and voucher workflows | | **Bookkeeping** | Journal Entries, General Ledger, Chart of Accounts, Opening Balances | Double-entry bookkeeping and opening documents | | **Reports** | Reports, Financial Analysis, Aging, VAT Returns, Audit Log, Discrepancies, Export | Reports, checks and exports | | **Warehousing** | Inventory, Warehouses, Stock Transfers, Fulfillments, Stock Counts, Tracking, Units, Consignment, Manufacturing | Inventory and production operations | | **Settings** | Settings, Payment Terms, Tax Rates, Budgets, Exchange Rates, Channels, Approvals, Periods | Accounting configuration and controls | > **Info:** Access to each tab and action is role-controlled. The accounting navigation is not available to the viewer role; operators and managers have limited operational access. Owners, admins and accountants have broader access according to the action. See [Roles & Permissions](https://directsale.ai/help/team/roles-permissions), and ask the account owner about missing controls rather than sharing an owner's credentials. ## The Overview Dashboard When you first enter the Accounting module, you see the **Overview Dashboard**. This page provides an at-a-glance summary of your business's financial health. ### Summary Cards At the top of the dashboard, four summary cards give you instant insight into your key financial metrics: | Card | Icon | Description | |------|------|-------------| | **Revenue** | Dollar sign (green) | Total revenue for the current month. Displays the percentage change compared to last month. A positive change is shown in green; a negative change is shown in red. | | **Expenses** | Receipt (red) | Total expenses for the current month. The percentage change is color-coded inversely -- a decrease in expenses is green (good), while an increase is red. | | **Net Profit** | Trending up/down | Net profit for the current month (revenue minus expenses). Shows an upward arrow icon when profit is growing and a downward arrow when it is declining. The percentage change compared to last month is displayed below. | | **Pending Invoices** | Document (amber) | The number of invoices awaiting approval, along with their total outstanding amount. This card is clickable -- clicking it navigates you directly to the Sales Invoices list filtered by "Pending Approval" status. | ### Revenue Trend Below the summary cards on the left side, the **Revenue Trend** chart displays your monthly revenue as horizontal bar charts. Each bar represents one month and shows: - The month/period label - The revenue amount (formatted in your configured currency) - The number of orders for that period The bars are proportionally sized relative to the highest-revenue month, giving you a quick visual comparison across months. A **View Invoices** link in the card header takes you to the Sales Invoices list for more detail. ### Expense Breakdown On the right side, the **Expense Breakdown** card shows your spending organized by category. Each category displays: - A color-coded dot matching the category's assigned color - The category name - The total amount spent in that category - A proportional progress bar - The percentage of total expenses This helps you quickly identify which areas of your business are consuming the most resources. A **View Expenses** link takes you to the detailed Expenses page. ### Top Selling Products In the lower-left section, the **Top Selling Products** table ranks your five best-performing products by units sold. The table includes: | Column | Description | |--------|-------------| | **#** | Rank position (1 through 5) | | **Product** | Product name (clickable -- links to the product search) | | **Units** | Total number of units sold | | **Revenue** | Total revenue generated by this product | A **View Orders** link in the card header navigates to the Orders page. ### Low Stock Alerts In the lower-right section, the **Low Stock Alerts** card lists products whose inventory levels have fallen below the configured threshold. Each item appears as a highlighted amber card showing: - The product name - The number of items remaining in stock Clicking any item takes you to the product search page for that item. If all products are well-stocked, the card displays a reassuring message indicating that no restocking is needed. A **View Inventory** link takes you to the Inventory management page. > **Warning:** The low stock alerts are based on real-time inventory data. If you use the Warehousing module, ensure your stock levels are kept up to date through regular stock transfers and purchase invoice processing to maintain accurate alerts. ## What's Next? The [Operations guide](https://directsale.ai/help/accounting/operations) covers units, installments, receipts/payments, opening balances, consignment and manufacturing. The [Inventory guide](https://directsale.ai/help/accounting/inventory) covers all six inventory tabs. [Financial Analysis](https://directsale.ai/help/accounting/financial-analysis) explains computed results and their interpretation. From the Overview dashboard, you can dive into any specific area of the Accounting module: - **[Sales Invoices](https://directsale.ai/help/accounting/sales-invoices)** -- Create and manage invoices for your customers - **[Purchase Invoices](https://directsale.ai/help/accounting/purchase-invoices)** -- Track invoices from your suppliers - **[Credit & Debit Notes](https://directsale.ai/help/accounting/credit-notes)** -- Handle returns and adjustments - **[Expenses](https://directsale.ai/help/accounting/expenses)** -- Track and categorize business expenses - **[Contacts](https://directsale.ai/help/accounting/contacts)** -- Manage customer and supplier contacts - **[Chart of Accounts](https://directsale.ai/help/accounting/chart-of-accounts)** -- Set up your account structure - **[Journal Entries](https://directsale.ai/help/accounting/journal-entries)** -- Create manual journal entries - **[General Ledger](https://directsale.ai/help/accounting/general-ledger)** -- Review account transaction history - **[Tax Rates](https://directsale.ai/help/accounting/tax-rates)** -- Configure tax rates for your region - **[Payment Terms](https://directsale.ai/help/accounting/payment-terms)** -- Define payment terms for invoices - **[Bank Reconciliation](https://directsale.ai/help/accounting/bank-reconciliation)** -- Match bank statements to transactions - **[Treasury](https://directsale.ai/help/accounting/treasury)** -- Manage bank accounts and cash positions - **[Budgets](https://directsale.ai/help/accounting/budgets)** -- Plan and track budgets against actuals - **[Financial Reports](https://directsale.ai/help/accounting/reports)** -- Generate P&L, revenue, margin, and expense reports - **[Accounting Settings](https://directsale.ai/help/accounting/settings)** -- Configure currency, VAT, invoice numbering, and more --- Source: https://directsale.ai/help/accounting/sales-invoices # Sales Invoices Sales invoices are the primary documents for recording revenue from your customers. The DirectSale accounting module supports standard invoices, walk-in (POS-style) sales, proforma invoices, and return invoices. Each invoice follows a structured approval workflow from creation through to payment. ## Accessing Sales Invoices Navigate to **Dashboard > Accounting > Invoices > Sales Invoices**. This opens the sales invoices list page with statistics, filters, and the invoices table. ## Statistics Cards At the top of the page, four cards provide a quick summary of your sales invoicing activity: | Card | Description | |------|-------------| | **Total Invoices** | The total number of sales invoices across all statuses and time periods. | | **This Month** | The number of invoices created during the current calendar month. | | **Paid** | The total number of invoices with a "Paid" status. | | **Pending** | The number of invoices currently waiting for approval (status: "Pending Approval"). | ## Invoice Statuses Every sales invoice has one of the following statuses: | Status | Badge Color | Description | |--------|-------------|-------------| | **Draft** | Gray | A newly created invoice that has not been submitted. It can be freely edited. | | **Pending Approval** | Yellow | The invoice has been submitted and is waiting for an authorized user to approve or reject it. | | **Approved** | Blue | The invoice has been approved and is ready for payment. Payments can now be recorded against it. | | **Paid** | Green | The invoice has been fully paid. The balance due is zero. | | **Partially Paid** | Orange | At least one payment has been recorded, but the total paid amount is less than the invoice total. | | **Cancelled** | Red | The invoice has been rejected or cancelled. It no longer contributes to financial totals. | ## Invoice Types | Type | Badge Color | Description | |------|-------------|-------------| | **Standard** | Blue | A regular sales invoice issued to a customer. | | **Walk-in** | Green | A point-of-sale invoice for walk-in customers. Created using the simplified Walk-in Sale form. | | **Return** | Red | A return invoice generated when items are returned from a paid or approved invoice. | | **Proforma** | Gray | A preliminary invoice sent before the final sale is confirmed. Not counted as revenue until converted. | ## Filtering and Searching The invoices list provides several filtering options: | Filter | Description | |--------|-------------| | **Search** | Free-text search by invoice number, customer name, or other fields. Results update as you type. | | **Status** | Filter by invoice status: All Statuses, Draft, Pending Approval, Approved, Paid, Partially Paid, or Cancelled. | | **Type** | Filter by invoice type: All Types, Standard, Walk-in, Return, or Proforma. | | **Date Range** | Set a start date and end date to filter invoices by issue date. Use the X button to clear the date range. | > **Info:** Changing any filter automatically resets the page to 1. The table shows 10 invoices per page, with pagination controls at the bottom showing the current page, total pages, and total number of results. ## The Invoices Table Each row in the invoices table displays the following columns: | Column | Description | |--------|-------------| | **Invoice Number** | The system-generated invoice number (e.g., `INV-00042`). Displayed in monospace font. | | **Type** | The invoice type badge (Standard, Walk-in, Return, or Proforma). | | **Customer** | The customer's name. Displays a dash (-) if no name was provided. | | **Date** | The issue date of the invoice, formatted according to your locale settings. | | **Total** | The total invoice amount including all costs, discounts, and taxes. | | **Paid** | The total amount paid so far against this invoice. | | **Status** | The current status badge of the invoice. | Clicking any row navigates you to the invoice detail page. ## Creating a New Sales Invoice ### Navigate to the New Invoice Form From the Sales Invoices list page, click the **New Invoice** button (with the plus icon) in the upper right. This opens the invoice creation form. ### Fill In Customer Information The **Customer Information** card has the following fields: | Field | Required | Description | |-------|----------|-------------| | **Search Existing Contact** | No | Type a customer name to search your existing contacts. A dropdown shows matching results with name, phone, and email. Click a result to auto-fill the customer fields. | | **Quick Add Contact** | No | Click the "Quick Add Contact" button to create a new contact without leaving the invoice form. The new contact is automatically linked to the invoice. | | **Customer Name** | Yes | The name of the customer. This is the only required field. It is auto-filled when you select an existing contact. | | **Phone** | No | The customer's phone number. | | **Email** | No | The customer's email address. | | **Address** | No | The customer's address. | | **Invoice Date** | No | The date the invoice is issued. Defaults to today's date. | | **Due Date** | No | The date by which payment is expected. | When you select an existing contact, a blue banner appears showing "Linked to contact: [Name]" with a **Clear** button to unlink. ### Add Line Items The **Items** card allows you to add one or more line items. Each item has the following fields: | Field | Description | |-------|-------------| | **Product Name** | Type to search for existing products. An autocomplete dropdown shows matching products with name, SKU, image, and price. Selecting a product auto-fills the name, SKU, and unit price. You can also type a custom product name manually. | | **SKU** | The stock keeping unit code. Auto-filled when selecting a product from search. | | **Qty** | The quantity of this item. Minimum value is 1. | | **Unit Price** | The price per unit. Auto-filled from the product's sale price when selected. | | **Discount** | A flat discount amount applied to this line item (not a percentage). | | **Line Total** | Automatically calculated as (Quantity x Unit Price) - Discount. | Use the **Add Item** button to add additional line items. Click the trash icon to remove a line item (you must always have at least one item). ### Add Additional Costs (Optional) The **Additional Costs** card lets you add extra charges such as packaging, handling, or service fees. Each additional cost has: - **Description** -- A text description of the cost (e.g., "Packaging fee"). - **Amount** -- The monetary amount of the cost. Click **Add Cost** to add more entries. Click the trash icon to remove one. ### Configure Invoice Settings The **Settings** card provides the following options: | Setting | Description | |---------|-------------| | **Shipping Cost** | The shipping/delivery cost for this order. | | **VAT Rate (%)** | The VAT/tax rate as a percentage (e.g., 10 for 10%). Set to 0 for tax-exempt invoices. | | **Overall Discount** | A flat discount applied to the entire invoice (subtracted from the total before VAT). | | **Currency** | The currency for this invoice. Options: USD, EUR, GBP, IRR, AED, TRY. Defaults to your tenant's configured currency. | | **Payment Method** | The expected payment method: Cash, Card, Transfer, Check, or Online. | | **Payment Reference** | A reference number or note for the payment (e.g., check number, transfer reference). | ### Review the Totals Summary The **Summary** card on the right side shows the calculated totals: | Line | Description | |------|-------------| | **Subtotal** | Sum of all line item totals. | | **Additional Costs** | Sum of all additional cost entries (shown only if greater than zero). | | **Shipping** | The shipping cost (shown only if greater than zero). | | **Discount** | The overall discount amount, shown in red with a minus sign (shown only if greater than zero). | | **VAT (x%)** | The calculated VAT amount based on the rate (shown only if VAT rate is greater than zero). The VAT is calculated on: (Subtotal - Discount + Shipping + Additional Costs) x VAT Rate. | | **Total** | The final total: Subtotal - Discount + Shipping + Additional Costs + VAT. | ### Add Notes (Optional) The **Notes** card provides two text areas: - **Customer Notes** -- Notes visible to the customer (e.g., on the printed invoice or PDF). - **Internal Notes** -- Notes visible only to your team. These are not shown on customer-facing documents. ### Save the Invoice At the bottom of the form, you have three action buttons: | Button | Description | |--------|-------------| | **Cancel** | Discards all changes and returns to the invoices list (or the invoice detail page when editing). | | **Save Draft** | Saves the invoice with a "Draft" status. You can edit it later before submitting. | | **Submit** | Saves the invoice and sets its status to "Pending Approval". This button only appears for new invoices (not when editing). | ## Editing an Invoice Only invoices in **Draft** status can be edited. From the invoice detail page, click the **Edit** button. This opens the same form as creating a new invoice, pre-filled with the existing data. When editing, the **Submit** button is replaced with **Save Changes**. ## Invoice Detail Page Clicking any invoice row in the list navigates to the detail page. The detail page shows: ### Header Section The header displays the invoice number, type badge, status badge, issue date, and due date. Action buttons appear on the right side based on the current status. ### Customer Information A card showing the customer's name, phone, email, and address (when available). ### Items Table A read-only table showing all line items with columns for row number, product name, SKU, quantity, unit price, discount, and line total. ### Additional Costs If the invoice has additional costs, they are listed with their descriptions and amounts. ### Totals A summary showing subtotal, shipping, discount, VAT, total, amount paid, and balance due. The balance due is shown in red if there is an outstanding amount, or in green if fully paid. ### Linked Transactions If payments or other transactions have been recorded against this invoice, they appear in a table with columns for date, type, description, reference, and amount. ### Notes Customer-facing notes and internal notes are displayed when present. ## Invoice Actions The available actions depend on the current invoice status: ### Draft Status Actions | Action | Description | |--------|-------------| | **Edit** | Opens the invoice in edit mode to modify any field. | | **Submit for Approval** | Changes the status to "Pending Approval" and sends it into the approval workflow. | | **Print PDF** | Generates a printable PDF version of the invoice. | ### Pending Approval Status Actions | Action | Description | |--------|-------------| | **Approve** | Approves the invoice, changing its status to "Approved". The invoice is now ready for payment recording. | | **Reject** | Opens a dialog where you can optionally enter a rejection reason. Rejecting the invoice changes its status to "Cancelled". | | **Print PDF** | Generates a printable PDF version. | ### Approved Status Actions | Action | Description | |--------|-------------| | **Record Payment** | Opens a payment dialog (see below). | | **Create Return** | Opens a return dialog to process item returns (see below). | | **Print PDF** | Generates a printable PDF version. | ### Paid Status Actions | Action | Description | |--------|-------------| | **Create Return** | Opens a return dialog to process item returns. | | **Print PDF** | Generates a printable PDF version. | ## Recording a Payment When you click **Record Payment** on an approved invoice, a dialog appears with these fields: ### Enter Payment Amount The **Amount** field is pre-filled with the remaining balance due. You can change this to record a partial payment. The field is required and must be greater than zero. ### Select Payment Method Choose the payment method from the dropdown: Cash, Card, Transfer, Check, or Online. ### Enter Payment Reference (Optional) Add a reference number such as a check number, wire transfer reference, or transaction ID. ### Select Bank Account Choose which bank account the payment should be deposited into. The dropdown shows your configured treasury/bank accounts. ### Confirm Click **Confirm** to record the payment. If the payment fully covers the balance due, the invoice status changes to "Paid". If a partial payment is recorded, the status changes to "Partially Paid". ## Creating a Return For approved or paid invoices, you can create a return to process item returns: ### Open the Return Dialog Click the **Create Return** button on the invoice detail page. ### Select Items to Return Each line item from the original invoice is shown with a checkbox. Check the items that are being returned. ### Set Return Quantities For each selected item, a quantity field appears. Set the number of units being returned (cannot exceed the original quantity). ### Enter Return Reason (Optional) Provide a reason for the return in the text area. ### Confirm the Return Click the **Confirm** button to create the return invoice. This generates a return-type invoice linked to the original. ## Walk-in Sales The Walk-in Sale feature provides a simplified, POS-style interface for processing sales to walk-in customers who do not need a formal invoice. ### Accessing Walk-in Sales From the Sales Invoices list page, click the **Walk-in Sale** button (with the shopping bag icon) in the upper right. ### Walk-in Sale Form The walk-in sale form is streamlined compared to the standard invoice form: | Field | Required | Description | |-------|----------|-------------| | **Customer Name** | No | Defaults to "Walk-in Customer" if left blank. | | **Phone** | No | The customer's phone number for records. | | **Items** | Yes | Add items with name, quantity, and unit price. | | **Payment Method** | No | Select from Cash, Card, Transfer, Check, or Online. | | **Bank Account** | No | Choose the bank account for depositing the payment. | ### After Completing a Walk-in Sale Upon successful submission, a success screen appears with three options: - **Print Receipt** -- Prints a receipt for the customer. - **New Sale** -- Starts a fresh walk-in sale form. - **Back to Invoices** -- Returns to the sales invoices list. > **Info:** Walk-in sales are automatically created with the type "Walk-in" and status "Paid", since payment is assumed to be collected at the point of sale. ## Printing Invoices The **Print PDF** button is available on every invoice detail page regardless of status. Clicking it generates an HTML-based print view in a new browser tab and opens the browser's print dialog. From there you can: - Print to a physical printer. - Save as a PDF file using your browser's "Save as PDF" print option. ## Tips for Efficient Invoice Management - **Use the status filter** to quickly find invoices that need attention. Filter by "Pending Approval" to see invoices awaiting your review, or "Approved" to find invoices ready for payment. - **Link contacts to invoices** by searching for existing contacts when creating invoices. This keeps your customer records connected and allows you to view the full transaction history from the contact's ledger. - **Use the date range filter** for period-specific reporting. Filter by a specific month to review all invoices for reconciliation purposes. - **Save as Draft first** if you are unsure about any details. Draft invoices can be edited freely before submitting for approval. - **Add internal notes** for any context your team needs to know about the invoice that should not be visible to the customer. --- Source: https://directsale.ai/help/accounting/purchase-invoices # Purchase Invoices Purchase invoices track what you buy from suppliers. They record incoming goods or services, calculate landed costs through cost allocation, and feed into your accounts payable and inventory systems. ## Accessing Purchase Invoices Navigate to **Dashboard > Accounting > Invoices > Purchase Invoices**. This opens the purchase invoices list page. ## Statistics Cards At the top of the page, four summary cards provide an overview: | Card | Description | |------|-------------| | **Total Invoices** | The total count of all purchase invoices. | | **Total Amount** | The combined monetary value of all purchase invoices. | | **This Month** | The number of purchase invoices created in the current month. | | **Last Month** | The number of purchase invoices from the previous month, for comparison. | ## Filtering and Searching The purchase invoices list supports the following filters: | Filter | Description | |--------|-------------| | **Search** | Free-text search by invoice number, supplier name, or other fields. | | **Status** | Filter by status: Draft, Pending Approval, Approved, Paid, Partially Paid, or Cancelled. | | **Date Range** | Start and end date pickers to filter by invoice date. | ## The Invoices Table Each row in the table displays: | Column | Description | |--------|-------------| | **Invoice Number** | The system-generated purchase invoice number. | | **Supplier** | The name of the supplier contact linked to this invoice. | | **Date** | The issue date of the invoice. | | **Total Amount** | The grand total including all costs, taxes, and discounts. | | **Paid** | The total amount paid so far. | | **Status** | The current status badge. | | **View** | Click to open the invoice detail page. | ## Creating a New Purchase Invoice ### Navigate to the Form From the Purchase Invoices list, click the **New Invoice** button. This opens the purchase invoice creation form. ### Select a Supplier The **Supplier** field is required. You have two options: - **Search existing contacts**: Type at least 2 characters to search your supplier contacts. An autocomplete dropdown shows matching suppliers with name, email, and phone. Click a result to select it. - **Quick Add Supplier**: Click the "Quick Add Supplier" button to create a new supplier contact without leaving the form. The new contact is automatically selected. Once selected, the supplier appears in a card showing their name, email, and phone. Click the X button to clear and select a different supplier. ### Fill In Invoice Details | Field | Required | Description | |-------|----------|-------------| | **Supplier Invoice Number** | No | The invoice number as printed on the supplier's own invoice. Useful for cross-referencing. | | **Invoice Date** | No | The date the invoice was issued. Defaults to today. | | **Due Date** | No | The date by which payment is expected to the supplier. | ### Add Line Items Each line item in a purchase invoice has the following fields: | Field | Description | |-------|-------------| | **Product Name** | Type to search existing products. The autocomplete shows matching products with name, SKU, cost price, weight, and dimensions. Selecting a product auto-fills the name, SKU, unit price (from cost price), weight, and volume. You can also enter a product name manually. | | **SKU** | The stock keeping unit code. Auto-filled when selecting a product. | | **Qty** | The quantity being purchased. Minimum value is 1. | | **Unit Price** | The cost price per unit. Auto-filled from the product's cost price when selected. | | **Weight** | The weight of the item (e.g., in kilograms). Used for weight-based cost allocation. | | **Volume** | The volume of the item. Used for volume-based cost allocation. | | **Line Total** | Automatically calculated as Quantity x Unit Price. | Click **Add Item** to add more line items. Click the trash icon to remove an item (at least one item must remain). > **Info:** Unlike sales invoices, purchase invoice line items include **Weight** and **Volume** fields. These are critical for accurate cost allocation when you have additional costs like freight or customs duties that should be distributed across items proportionally. ### Add Additional Costs (Optional) Additional costs represent charges beyond the item prices, such as: - Freight / shipping charges - Customs duties - Insurance - Handling fees - Packaging costs Each additional cost entry has: - **Description** -- What the cost is for (e.g., "International shipping"). - **Amount** -- The monetary value of the cost. Click **Add Cost** to add entries. Click the trash icon to remove one. ### Choose a Cost Allocation Method When you have additional costs, the system needs to distribute them across your line items. This determines the **true landed cost** of each product. A dropdown appears with four allocation methods: | Method | How It Works | |--------|-------------| | **By Price** | Allocates costs proportionally based on each item's line total relative to the subtotal. Items with higher line totals absorb more of the additional cost. | | **By Weight** | Allocates costs proportionally based on each item's total weight (weight x quantity). Heavier items absorb more cost. Requires weight values on items. | | **By Volume** | Allocates costs proportionally based on each item's total volume (volume x quantity). Bulkier items absorb more cost. Requires volume values on items. | | **Equal** | Distributes costs equally across all items based on their quantities. Each unit receives the same additional cost regardless of price, weight, or volume. | ### Review the Cost Allocation Preview When additional costs are present and a method is selected, a **Cost Allocation Preview** table appears inside a highlighted blue box. This table shows: | Column | Description | |--------|-------------| | **Product** | The name of each line item. | | **Allocated Cost** | How much of the total additional costs are allocated to this item. | | **Final Unit Cost** | The original unit price plus the allocated cost divided by quantity. This is the true landed cost per unit. | This preview updates in real time as you change items, quantities, prices, weights, volumes, or the allocation method. > **Warning:** If you select "By Weight" or "By Volume" but your items do not have weight or volume values entered, the allocation will be zero for those items. Make sure to fill in the relevant measurements for accurate cost allocation. ### Configure Financial Settings | Setting | Description | |---------|-------------| | **VAT Rate (%)** | The tax rate as a percentage applied to the subtotal. | | **Discount** | A flat discount amount subtracted from the total. | | **Currency** | The currency for this purchase invoice. Defaults to your tenant's configured currency. | ### Review the Totals Summary The totals section on the right shows: | Line | Description | |------|-------------| | **Subtotal** | Sum of all line item totals. | | **VAT (x%)** | The calculated tax amount. | | **Discount** | The discount amount, shown in red. | | **Additional Costs** | The total of all additional cost entries. | | **Grand Total** | Subtotal + VAT - Discount + Additional Costs. | ### Add Notes (Optional) Two text areas are available: - **Notes** -- General notes about this purchase. - **Internal Notes** -- Private notes visible only to your team. ### Save the Invoice At the bottom of the form: | Button | Description | |--------|-------------| | **Cancel** | Returns to the list without saving. | | **Save Draft** | Saves the invoice in "Draft" status for later editing. When editing an existing invoice, this button reads "Save Changes". | | **Submit for Approval** | Saves and submits the invoice for approval. Only appears when creating a new invoice. | ## Editing a Purchase Invoice Only invoices in **Draft** status can be edited. From the invoice detail page, click **Edit** to open the form pre-filled with existing data. ## Purchase Invoice Workflow Purchase invoices follow the same approval workflow as sales invoices: 1. **Draft** -- Can be edited freely. Submit for approval when ready. 2. **Pending Approval** -- Waiting for an authorized user to approve or reject. 3. **Approved** -- Ready for payment recording. 4. **Paid / Partially Paid** -- Payment has been recorded (fully or partially). 5. **Cancelled** -- The invoice was rejected or voided. ## Understanding Cost Allocation Cost allocation is one of the most important features of purchase invoices. It ensures your product costs accurately reflect the true cost of acquiring goods, including all ancillary expenses. ### Example Suppose you purchase: - Product A: 10 units at $50 each (line total: $500) - Product B: 5 units at $100 each (line total: $500) - Shipping cost: $100 **By Price allocation:** - Product A and B have equal line totals, so each gets $50 of the shipping cost. - Product A's final unit cost: $50 + ($50 / 10) = $55 - Product B's final unit cost: $100 + ($50 / 5) = $110 **Equal allocation (by quantity):** - Total quantity: 15 units - Product A gets: (10/15) x $100 = $66.67 - Product B gets: (5/15) x $100 = $33.33 - Product A's final unit cost: $50 + ($66.67 / 10) = $56.67 - Product B's final unit cost: $100 + ($33.33 / 5) = $106.67 ## Tips for Effective Purchase Invoice Management - **Always link a supplier contact** to your purchase invoices. This builds a complete purchase history per supplier that you can review from the contact's ledger. - **Enter weights and volumes** on line items if you plan to use weight-based or volume-based cost allocation. This is especially important for import/export businesses with significant freight costs. - **Use the Supplier Invoice Number** field to record the vendor's own invoice number. This makes reconciliation much easier when matching your records to supplier statements. - **Review the cost allocation preview** before saving to ensure additional costs are distributed as expected. - **Save as Draft** if you are waiting for the final shipping bill or other cost details. You can edit the draft later to add additional costs before submitting for approval. --- Source: https://directsale.ai/help/accounting/credit-notes # Credit & Debit Notes Credit notes and debit notes are adjustment documents used to correct or modify previously issued invoices. A **credit note** reduces the amount a customer owes (linked to a sales invoice), while a **debit note** reduces the amount you owe a supplier (linked to a purchase invoice). ## Credit Notes ### Accessing Credit Notes Navigate to **Dashboard > Accounting > Invoices > Credit Notes**. This opens the credit notes list page. ### Credit Note Statuses | Status | Badge Color | Description | |--------|-------------|-------------| | **Draft** | Gray | A newly created credit note that has not been approved. Can be voided. | | **Approved** | Blue | The credit note has been reviewed and approved. It can now be applied to the customer's balance. | | **Applied** | Green | The credit note has been applied -- the customer's balance has been adjusted and a treasury transaction may have been created. | | **Voided** | Red | The credit note has been cancelled. It no longer has any financial effect. | ### Creating a Credit Note ### Open the Create Dialog On the Credit Notes list page, click the **Create Credit Note** button. A dialog window opens. ### Select a Sales Invoice The first field asks you to select the sales invoice that this credit note relates to. Choose the relevant invoice from the dropdown. This links the credit note to the original sale. ### Add Items Add one or more items to the credit note. Each item has: | Field | Description | |-------|-------------| | **Product Name** | The name of the product being credited. | | **Quantity** | The number of units being credited/returned. | | **Unit Price** | The price per unit for the credit. | | **Tax Rate** | The applicable tax rate percentage for this item. | ### Enter a Reason Provide a reason for the credit note in the text field (e.g., "Defective goods returned", "Pricing error on original invoice"). ### Submit Click **Create** to save the credit note. It will be created with a "Draft" status. ### Credit Note Actions The actions available depend on the credit note's current status: | Current Status | Available Actions | Description | |----------------|-------------------|-------------| | **Draft** | Approve | Approves the credit note, changing its status to "Approved". | | **Draft** | Void | Cancels the credit note. Status changes to "Voided". | | **Approved** | Apply | Applies the credit to the customer's balance. A dialog asks you to select a **bank account** from which the refund will be processed. Status changes to "Applied". | | **Approved** | Void | Cancels the approved credit note before it is applied. Status changes to "Voided". | > **Info:** When you **Apply** a credit note, the system creates a treasury transaction in the selected bank account and adjusts the customer's outstanding balance on the linked invoice. ### Applying a Credit Note ### Click Apply On an approved credit note, click the **Apply** button. ### Select a Bank Account A dialog appears asking you to choose the bank account for processing the refund/credit. Select the appropriate account from the dropdown. ### Confirm Click **Apply** to finalize. The credit note status changes to "Applied" and the financial records are updated. ## Debit Notes ### Accessing Debit Notes Navigate to **Dashboard > Accounting > Invoices > Debit Notes**. This opens the debit notes list page. ### Debit Note Statuses Debit notes use the same status workflow as credit notes: | Status | Badge Color | Description | |--------|-------------|-------------| | **Draft** | Gray | Newly created, awaiting approval. | | **Approved** | Blue | Approved and ready to be applied. | | **Applied** | Green | Applied to the supplier's balance. | | **Voided** | Red | Cancelled with no financial effect. | ### Creating a Debit Note ### Open the Create Dialog On the Debit Notes list page, click the **Create Debit Note** button. ### Select a Purchase Invoice Choose the purchase invoice that this debit note relates to. This links the debit note to the original purchase. ### Add Items Add items to the debit note with the same fields as credit notes: | Field | Description | |-------|-------------| | **Product Name** | The name of the product. | | **Quantity** | The number of units being debited/returned. | | **Unit Price** | The price per unit. | | **Tax Rate** | The applicable tax rate percentage. | ### Enter a Reason Provide a reason for the debit note (e.g., "Goods returned to supplier", "Overcharge on original invoice"). ### Submit Click **Create** to save. The debit note is created with "Draft" status. ### Debit Note Actions | Current Status | Available Actions | Description | |----------------|-------------------|-------------| | **Draft** | Approve | Approves the debit note. | | **Draft** | Void | Cancels the debit note. | | **Approved** | Apply | Applies the debit to the supplier's balance, with bank account selection. | | **Approved** | Void | Cancels the debit note before application. | ## Credit Notes vs. Debit Notes | Aspect | Credit Note | Debit Note | |--------|-------------|------------| | **Direction** | You credit the customer (they owe you less) | You debit the supplier (they owe you, or you owe them less) | | **Linked To** | Sales Invoice | Purchase Invoice | | **Common Use Cases** | Customer returns, pricing errors, service credits | Supplier returns, overcharges, damaged goods | | **Financial Effect** | Reduces accounts receivable | Reduces accounts payable | | **When Applied** | Refund issued to customer via bank account | Adjustment to supplier balance via bank account | ## Common Use Cases ### Customer Returns a Product 1. Go to the original sales invoice and use **Create Return** (from the invoice detail page), or 2. Create a credit note manually linked to the sales invoice. ### Supplier Overcharged You 1. Create a debit note linked to the purchase invoice. 2. Add the items with the price difference. 3. Approve and apply the debit note. ### Price Adjustment After Invoice 1. Create a credit note (for sales) or debit note (for purchases). 2. Add items with the adjusted quantity and the price difference. 3. Follow the approve-and-apply workflow. > **Warning:** Once a credit note or debit note is **Applied**, it cannot be reversed. Make sure all details are correct before applying. If you need to reverse an applied credit/debit, you will need to create a new offsetting entry. --- Source: https://directsale.ai/help/accounting/debit-notes # Debit Notes and Purchase Returns Use **Accounting > Debit Notes** to record supported adjustments associated with a purchase invoice. This is not the customer-facing product Returns screen. ## Before you start Locate the correct purchase invoice and supplier. Check remaining eligible quantities, tax settings and the intended financial adjustment. Use a role allowed to create and approve accounting documents. ## Create and process a note 1. Open Debit Notes and select the new note action. 2. Choose the source purchase invoice. 3. Select its actual source items and enter the quantities and unit prices to adjust. 4. Review tax information, total and reason. 5. Save the draft and inspect its source invoice reference. 6. Use Approve when the note has been checked. 7. Use Apply where available, selecting the bank account requested by the form. 8. Reload the note and inspect the purchase invoice, relevant balances and inventory effects before considering the return complete. The visible lifecycle distinguishes draft, approved, applied and voided. Actions depend on current status. Deleting a draft is different from voiding a processed note; use the action offered for that state. ## Verify the result Compare item quantities and amounts with the original purchase, and make sure the correct supplier is affected. A accounting status change is not itself proof of a physical return shipment or a successful external bank refund. ## Troubleshooting Source invoice missing: check the account, invoice status and eligibility. Quantity rejected: compare the original and already-adjusted quantities. Apply fails: check selected bank account, currency, posting period and exact validation error. After a timeout, reopen the document before repeating Apply. See [Purchase Invoices](https://directsale.ai/help/accounting/purchase-invoices), [Credit Notes](https://directsale.ai/help/accounting/credit-notes) and [Inventory](https://directsale.ai/help/accounting/inventory). --- Source: https://directsale.ai/help/accounting/recurring-invoices # Recurring Invoices Recurring invoices generate sales invoices on a schedule. They do not automatically collect a card or bank payment. ## Before you start Create the customer contact and confirm accounting access, currency, prices, tax/accounting configuration and approval policy. Agree the billing schedule outside the software before enabling automation. ## Create a schedule 1. Open **Accounting > Recurring Invoices** and select the new/create action. 2. Enter a recognizable template name and choose the contact. 3. Select Weekly, Every two weeks, Monthly, Quarterly, Semiannual or Annual. 4. Add invoice lines with product name, quantity and unit price. 5. Review **Auto approve**. Leaving it off permits review; enabling it can change the generated invoice's approval workflow. 6. Save, then inspect total, active status and next due date on the list. 7. Open the edit action to correct future template details when necessary. ## Generate, pause and verify Use the offered **Run/Generate** action only when you intend to create the next invoice. Inspect Sales Invoices after it completes. Do not press it repeatedly because the list was slow to refresh. Pause or deactivate a schedule to stop future scheduled generation; resuming does not authorize charging the customer. Deleting a template is not deletion or cancellation of invoices already created. Correct existing invoices through their normal invoice workflow. ## Troubleshooting No invoice: confirm active status, due date, customer, line values and any generation error. Draft instead of approved: check Auto approve and accounting approval requirements. Missing payment: a generated invoice is not a bank receipt; use the normal payment workflow when money is received. See [Sales Invoices](https://directsale.ai/help/accounting/sales-invoices), [Approvals](https://directsale.ai/help/accounting/approvals) and [Installments](https://directsale.ai/help/accounting/operations) for related but different processes. --- Source: https://directsale.ai/help/accounting/expenses # Expenses The Expenses module lets you track, categorize, and analyze your business spending. You can record one-time expenses or set up recurring expenses that repeat on a schedule. Each expense is assigned to a category for organized reporting. ## Accessing Expenses Navigate to **Dashboard > Accounting > Treasury > Expenses**. This opens the expenses list page. ## Statistics Cards At the top of the page, you see summary statistics: | Card | Description | |------|-------------| | **Total Expenses** | The total amount of all recorded expenses. | | **Top Category 1** | The highest-spending expense category with its total amount. | | **Top Category 2** | The second highest-spending category. | | **Top Category 3** | The third highest-spending category. | These cards help you quickly identify where most of your money is going. ## Filtering Expenses The list provides the following filters: | Filter | Description | |--------|-------------| | **Search** | Free-text search by description or other expense fields. | | **Category** | Filter by a specific expense category. Select "All" to see all categories. | | **Date Range** | Start and end date pickers to filter expenses by date. | ## The Expenses Table Each row displays an expense record with its key information. Clicking a row opens the expense for viewing or editing. ## Creating an Expense ### Open the Create Dialog Click the **Add Expense** button on the expenses list page. A dialog window opens. ### Fill In Expense Details | Field | Required | Description | |-------|----------|-------------| | **Category** | Yes | Select an expense category from the dropdown (e.g., Office Supplies, Travel, Marketing). If you need a new category, use the category management feature first. | | **Description** | Yes | A text description of what the expense is for (e.g., "Monthly office rent", "Client dinner"). | | **Amount** | Yes | The monetary amount of the expense. | | **Date** | No | The date the expense occurred. Defaults to today if not specified. | | **Recurring** | No | Toggle this on to make this a recurring expense. When enabled, a frequency selector appears. | | **Frequency** | No | Only shown when "Recurring" is enabled. Options: **Weekly**, **Monthly**, **Quarterly**, **Yearly**. | | **Notes** | No | Additional notes or details about the expense. | ### Save Click **Save** to create the expense. It appears in the list immediately. > **Info:** **Recurring expenses** are automatically created on the specified schedule. For example, a monthly expense set for January 15 will be generated again on February 15, March 15, and so on. This is useful for fixed costs like rent, subscriptions, or insurance premiums. ## Editing an Expense Click on an existing expense in the list to open the edit dialog. All fields can be modified. Click **Save** to apply changes. ## Deleting an Expense In the edit dialog, click the **Delete** button to remove the expense. You will be asked to confirm the deletion. > **Warning:** Deleting an expense permanently removes it from your records and financial reports. If the expense has already been included in a closed accounting period or financial report, consider voiding it instead of deleting it, or make a note of the adjustment. ## Managing Expense Categories Expense categories help you organize spending for reporting and budgeting. You can manage categories directly from the expenses page. ### Viewing Categories Click the **Manage Categories** button (or the category settings icon) on the expenses page. A dialog opens showing all existing categories with their assigned colors. ### Creating a Category ### Open the Category Manager Click the **Manage Categories** button on the expenses page. ### Enter Category Details | Field | Description | |-------|-------------| | **Name** | The category name (e.g., "Office Supplies", "Travel", "Software Subscriptions"). | | **Color** | Choose from 16 preset colors. This color is used in expense charts and the breakdown visualization on the dashboard. | ### Save Click **Add** to create the category. It immediately becomes available in the category dropdown when creating or editing expenses. ### Deleting a Category In the category manager, click the delete button next to a category to remove it. Categories that are currently assigned to expenses may still show on existing records, but will no longer be available for new expenses. ### Available Preset Colors The category color picker provides 16 predefined colors covering a wide range of the spectrum, ensuring easy visual differentiation between categories in charts and reports. ## Recurring Expense Frequencies | Frequency | Description | |-----------|-------------| | **Weekly** | The expense is recorded every 7 days from the start date. | | **Monthly** | The expense is recorded on the same day each month. | | **Quarterly** | The expense is recorded every 3 months. | | **Yearly** | The expense is recorded once per year on the anniversary of the start date. | ## How Expenses Appear in Reports Expenses feed into several areas of the accounting module: - **Dashboard Overview** -- The Expense Breakdown card shows spending by category with proportional bars and percentages. - **Financial Reports** -- Expenses appear in the Profit & Loss statement and the Expense Breakdown report. - **Budgets** -- Expense accounts can be tracked against budgets to monitor spending versus planned amounts. ## Tips for Effective Expense Tracking - **Create specific categories** rather than using generic ones. "AWS Hosting" is more useful than "Technology" when analyzing spending. - **Use recurring expenses** for predictable costs to avoid manual data entry each period. - **Add notes** to expenses for context that may be needed during audits or reviews. - **Review the top categories** on the statistics cards regularly to spot unexpected spending trends. - **Match categories to your chart of accounts** expense accounts for consistent financial reporting. --- Source: https://directsale.ai/help/accounting/contacts # Contacts Contacts represent the customers and suppliers you do business with. They are the link between your invoices and your business relationships. By maintaining a contacts database, you can quickly assign customers to sales invoices, link suppliers to purchase invoices, and view the complete transaction history for each contact. ## Accessing Contacts Navigate to **Dashboard > Accounting > Invoices > Contacts**. This opens the contacts list page. ## Contact Types Each contact has a type that determines how it can be used: | Type | Description | |------|-------------| | **Customer** | A contact who buys from you. Can be assigned to sales invoices and credit notes. | | **Supplier** | A contact who sells to you. Can be assigned to purchase invoices and debit notes. | | **Both** | A contact who is both a customer and a supplier. Can be used on any type of invoice. | ## Filtering Contacts | Filter | Description | |--------|-------------| | **Search** | Free-text search by name, company, email, phone, or other contact fields. | | **Type** | Filter by contact type: All, Customer, Supplier, or Both. | ## Creating a Contact ### Open the Create Dialog Click the **Add Contact** button on the contacts list page. A dialog window opens. ### Fill In Contact Details | Field | Required | Description | |-------|----------|-------------| | **Name** | Yes | The full name of the contact person or business. | | **Type** | Yes | Select from: Customer, Supplier, or Both. | | **Company** | No | The company or organization name, if different from the contact name. | | **Phone** | No | The contact's phone number. | | **Email** | No | The contact's email address. | | **Address** | No | Street address or first line of address. | | **City** | No | The city. | | **Province / State** | No | The province, state, or region. | | **Postal Code** | No | The postal/ZIP code. | | **Country** | No | The country. | | **Tax ID** | No | The contact's tax identification number (e.g., VAT number, EIN, TIN). | | **National ID** | No | A national identification number, if applicable in your region. | | **Credit Limit** | No | The maximum credit amount you are willing to extend to this contact. Enter as a number. | | **Notes** | No | Any additional notes about this contact. | ### Save Click **Create** to save the contact. It immediately appears in the contacts list and becomes available for selection in invoice forms. > **Info:** You can also create contacts directly from the invoice creation forms using the **Quick Add Contact** feature. This creates a new contact with minimal information and automatically links it to the invoice being created. ## Contact Detail Page Clicking a contact in the list opens the contact detail page, which has two tabs: **Info** and **Ledger**. ### Info Tab The Info tab displays all of the contact's details in an editable form. You can update any field and click **Save** to apply changes. The same fields from the creation form are available for editing: - Name, Type, Company - Phone, Email - Address, City, Province, Postal Code, Country - Tax ID, National ID - Credit Limit - Notes ### Ledger Tab The Ledger tab shows the complete transaction history for this contact. It displays a paginated table of all invoices (both sales and purchase invoices) associated with this contact. | Column | Description | |--------|-------------| | **Invoice Number** | The invoice number. Clicking it navigates to the invoice detail page. | | **Type** | Whether it is a sales invoice or purchase invoice. | | **Date** | The issue date of the invoice. | | **Amount** | The total invoice amount. | | **Status** | The current status of the invoice. | This gives you a complete financial picture of your relationship with each contact -- how much they have bought from you (or sold to you), and the current status of all invoices. ## Contact Statistics At the top of the contact detail page, you can see summary counts: | Stat | Description | |------|-------------| | **Sales Invoices** | The total number of sales invoices linked to this contact. | | **Purchase Invoices** | The total number of purchase invoices linked to this contact. | ## Deleting a Contact On the contact detail page, click the **Delete** button. A confirmation dialog appears asking you to confirm the deletion. > **Warning:** Deleting a contact does **not** delete the invoices linked to it. The invoices will retain the customer/supplier name but will no longer be linked to a contact record. Consider deactivating contacts rather than deleting them if they have existing transaction history. ## Using Contacts with Invoices ### In Sales Invoices When creating a sales invoice, the **Search Existing Contact** field searches contacts with type "Customer" or "Both". Selecting a contact auto-fills the customer name, phone, email, and address fields on the invoice. ### In Purchase Invoices When creating a purchase invoice, the **Supplier** search field searches contacts with type "Supplier" or "Both". Selecting a supplier links the invoice to that contact. ### Quick Add from Invoices Both sales and purchase invoice forms have a **Quick Add Contact** button. This opens a simplified dialog where you can create a new contact without leaving the invoice form. The contact is automatically selected and linked to the invoice. ## Tips for Managing Contacts - **Use the "Both" type** for contacts who are both your customers and suppliers. This avoids creating duplicate records. - **Fill in Tax ID** for all business contacts. This information is often needed on invoices for tax compliance. - **Set credit limits** for customer contacts to track how much credit you are extending. While the system does not enforce credit limits automatically, it provides visibility for your accounting team. - **Review the ledger tab** regularly to understand the financial relationship with each contact and identify any overdue invoices. - **Keep address information up to date** as it may be printed on invoices and shipping documents. --- Source: https://directsale.ai/help/accounting/products # Accounting Products The **Accounting > Products** screen provides a catalog view for accounting and inventory work. It is not a second independent stock ledger. ## Before you start Check the product's identity, SKU, category, currency and whether it is controlled by a linked hub. Physical measurements affect shipping; cost price affects margin interpretation. Do not use a sale price as the purchase cost. ## Add or edit 1. Open Accounting Products and search/filter by the intended product or category. 2. Use Add for a new product, or Edit on an existing row. 3. Review name, SKU, category, image and description. 4. Enter the appropriate base, sale and cost prices, stock quantity, low-stock threshold and stock status. 5. Review weight and length/width/height in the displayed units and the active switch. 6. Save and reopen the product to verify the stored data. 7. For the expandable inline editor, use its own Save action; collapsing a row is not a save. ## Sorting and stock work Use column sorting and category/search filters to find records. Check both numeric quantity and stock status rather than assuming a status label adjusts quantity. For warehouse balances, physical counts or stock movements, use [Inventory](https://directsale.ai/help/accounting/inventory). ## Verification and troubleshooting If a centrally controlled field is rejected, change it at the hub or review the link's synchronization scope. If a product seems missing, remove filters and confirm active status and tenant. Check invoices and stock history before deleting products used in transactions. Do not recreate an existing product simply to change its image or price. Use [Product Editing](https://directsale.ai/help/products/editing-products) for variants, SEO, AI content and storefront-specific details. --- Source: https://directsale.ai/help/accounting/chart-of-accounts # Chart of Accounts The Chart of Accounts is the foundation of your bookkeeping system. It defines the structure of accounts used to record all financial transactions. Every journal entry, invoice payment, and expense is posted to one or more accounts in the chart. ## Accessing the Chart of Accounts Navigate to **Dashboard > Accounting > Bookkeeping > Chart of Accounts**. ## Overview Statistics Three summary cards appear at the top of the page: | Card | Description | |------|-------------| | **Total Accounts** | The total number of accounts in your chart, including both active and inactive. | | **Active Accounts** | The number of currently active accounts available for posting transactions. | | **Inactive Accounts** | The number of deactivated accounts no longer available for new transactions. | ## Account Types Every account belongs to one of five fundamental types based on the accounting equation: | Type | Badge Color | Description | Normal Balance | |------|-------------|-------------|----------------| | **Asset** | Blue | Things your business owns (cash, receivables, inventory, equipment). | Debit | | **Liability** | Red | Things your business owes (payables, loans, taxes due). | Credit | | **Equity** | Purple | Owner's stake in the business (capital, retained earnings). | Credit | | **Revenue** | Green | Income earned from business operations (sales, service revenue). | Credit | | **Expense** | Orange | Costs incurred to run the business (rent, payroll, utilities). | Debit | ## Account Sub-Types Each account type has specific sub-types that further classify the account: ### Asset Sub-Types | Sub-Type | Description | |----------|-------------| | Current Asset | Short-term assets expected to be converted to cash within one year. | | Fixed Asset | Long-term tangible assets (property, equipment, vehicles). | | Bank | Bank account balances. | | Cash | Physical cash and cash equivalents. | | Accounts Receivable | Money owed to you by customers. | | Inventory | Goods held for sale or use in production. | | Prepaid | Expenses paid in advance (prepaid rent, insurance). | | Other Asset | Any asset not fitting the above categories. | ### Liability Sub-Types | Sub-Type | Description | |----------|-------------| | Current Liability | Short-term obligations due within one year. | | Long-term Liability | Obligations due beyond one year (long-term loans, bonds). | | Accounts Payable | Money you owe to suppliers. | | Tax Payable | Taxes owed to government authorities. | | Other Liability | Any liability not fitting the above categories. | ### Equity Sub-Types | Sub-Type | Description | |----------|-------------| | Owner Equity | Owner's investment in the business. | | Retained Earnings | Accumulated profits not distributed as dividends. | | Share Capital | Capital raised through issuing shares. | | Other Equity | Any equity item not fitting the above categories. | ### Revenue Sub-Types | Sub-Type | Description | |----------|-------------| | Sales | Revenue from selling goods. | | Service Revenue | Revenue from providing services. | | Interest Income | Income earned from interest on deposits or loans. | | Other Income | Any revenue not fitting the above categories. | ### Expense Sub-Types | Sub-Type | Description | |----------|-------------| | Cost of Goods Sold | Direct costs of producing goods sold. | | Operating Expense | General business operating costs. | | Payroll | Employee salaries, wages, and benefits. | | Rent | Rental costs for office, warehouse, or retail space. | | Utilities | Electricity, water, internet, and similar services. | | Depreciation | The reduction in value of fixed assets over time. | | Other Expense | Any expense not fitting the above categories. | ## The Tree View The chart of accounts is displayed as a hierarchical **tree view**. Parent accounts contain child (sub) accounts, and you can expand or collapse branches to navigate the structure. Each row in the tree shows: | Column | Description | |--------|-------------| | **Expand/Collapse** | An arrow toggle to expand or collapse child accounts. Only shown for accounts that have children. | | **Code** | The account code in monospace font (e.g., `1000`, `1100`, `2000`). | | **Name** | The account name. | | **Type** | A color-coded badge showing the account type (Asset, Liability, Equity, Revenue, Expense). | | **Balance** | The current balance of the account, formatted in your configured currency. | | **Actions** | Edit (pencil icon) and Deactivate (ban icon) buttons. | Inactive accounts appear with reduced opacity. ### Searching the Tree Use the search bar above the tree to filter accounts by code, name, or type. The tree automatically shows matching accounts and their parent hierarchy. ### Expanding and Collapsing - **Expand All** button -- Expands all branches in the tree, showing every account. - **Collapse All** button -- Collapses all branches, showing only top-level accounts. - Click the arrow on any individual account to toggle its children. ## Creating an Account ### Click Add Account Click the **Add Account** button in the page header. A dialog window opens. ### Fill In Account Details | Field | Required | Description | |-------|----------|-------------| | **Code** | Yes | A unique alphanumeric code for this account (e.g., `1000`, `1100`, `5010`). Typically follows a numbering convention where the first digit indicates the type (1=Assets, 2=Liabilities, etc.). | | **Name** | Yes | A descriptive name for the account (e.g., "Cash on Hand", "Accounts Receivable", "Sales Revenue"). | | **Type** | Yes | The account type: Asset, Liability, Equity, Revenue, or Expense. Changing the type resets the sub-type selection. | | **Sub-Type** | No | A more specific classification within the selected type. The available sub-types change based on the type selected. | | **Normal Side** | No | Whether this account normally has a Debit or Credit balance. Defaults to "Debit". This is automatically suggested based on the type (assets and expenses are debit; liabilities, equity, and revenue are credit). | | **Parent Account** | No | Select a parent account to nest this account under. Choose "None (Top Level)" for a root-level account. The dropdown shows all active accounts with their code and name. | | **Description** | No | An optional text description explaining the purpose of this account. | ### Save Click **Add Account** to create the account. It appears in the tree immediately. ## Editing an Account Click the pencil icon on any account row. The same dialog opens pre-filled with the account's current values. Make your changes and click **Save Changes**. ## Deactivating an Account Click the ban icon on an active account row. A confirmation dialog appears. Deactivated accounts: - Are no longer available for selection when creating journal entries or other transactions. - Remain in the chart of accounts with reduced opacity for historical reference. - Retain their balance and transaction history. > **Warning:** Deactivating an account does **not** delete any transactions posted to it. All historical data is preserved. If you need to reactivate an account, edit it and set it back to active. ## Seeding Default Accounts If you are setting up your chart of accounts for the first time, you can use the **Seed Default Accounts** button to automatically create a standard set of accounts. This creates a common structure including: - Asset accounts (Cash, Bank, Accounts Receivable, Inventory, etc.) - Liability accounts (Accounts Payable, Tax Payable, etc.) - Equity accounts (Owner's Equity, Retained Earnings) - Revenue accounts (Sales Revenue, Service Revenue, etc.) - Expense accounts (Cost of Goods Sold, Operating Expenses, Payroll, Rent, etc.) > **Info:** Seeding default accounts is safe to run even if you already have some accounts. It will add the default accounts without overwriting existing ones. However, duplicate codes may cause conflicts, so it is best used on a fresh chart of accounts. ## Account Numbering Conventions While the system does not enforce a specific numbering scheme, the following convention is commonly used: | Range | Type | Examples | |-------|------|----------| | **1000-1999** | Assets | 1000 Cash, 1100 Bank, 1200 Accounts Receivable | | **2000-2999** | Liabilities | 2000 Accounts Payable, 2100 Tax Payable | | **3000-3999** | Equity | 3000 Owner's Equity, 3100 Retained Earnings | | **4000-4999** | Revenue | 4000 Sales Revenue, 4100 Service Revenue | | **5000-5999** | Expenses | 5000 COGS, 5100 Operating Expenses, 5200 Payroll | Using a consistent numbering scheme makes it easier to find accounts, sort reports, and understand your financial structure at a glance. ## Tips for Setting Up Your Chart of Accounts - **Start with the seed defaults** and customize from there. It is faster than building from scratch. - **Use parent-child relationships** to group related accounts. For example, have a parent "Bank Accounts" with children for each individual bank account. - **Keep account names descriptive** but concise. "Office Supplies" is better than "General Expense Category 3". - **Match your chart to your reporting needs**. If you need to report on specific expense categories (e.g., Marketing vs. R&D), create separate accounts for each. - **Avoid creating too many accounts**. Start with a manageable structure and add accounts as needed. An overly granular chart creates unnecessary complexity. - **Use sub-types** to classify accounts for automated categorization in financial reports. --- Source: https://directsale.ai/help/accounting/journal-entries # Journal Entries Journal entries are the fundamental building blocks of double-entry bookkeeping. Every financial transaction in your business is recorded as a journal entry with at least one debit line and one credit line that must balance. While many journal entries are created automatically (e.g., when invoices are paid), you can also create manual journal entries for adjustments, corrections, and non-standard transactions. ## Accessing Journal Entries Navigate to **Dashboard > Accounting > Bookkeeping > Journal Entries**. ## Understanding Double-Entry Bookkeeping Every journal entry follows the double-entry principle: **total debits must equal total credits**. This ensures the accounting equation (Assets = Liabilities + Equity) always remains in balance. | Concept | Description | |---------|-------------| | **Debit** | An entry on the left side of an account. Increases assets and expenses; decreases liabilities, equity, and revenue. | | **Credit** | An entry on the right side of an account. Increases liabilities, equity, and revenue; decreases assets and expenses. | | **Balanced Entry** | A journal entry where the sum of all debit amounts equals the sum of all credit amounts. | ## Journal Entry Statuses | Status | Description | |--------|-------------| | **Draft** | A newly created journal entry that has not been posted. It does not affect account balances. Can be edited or voided. | | **Posted** | The journal entry has been posted to the general ledger. It affects account balances and appears in financial reports. | | **Voided** | The journal entry has been cancelled. It no longer affects account balances. | ## The Journal Entries List The list page shows all journal entries with the following columns: | Column | Description | |--------|-------------| | **Entry Number** | The system-generated journal entry number. | | **Date** | The date of the entry. | | **Description** | A brief description of what this entry records. | | **Reference** | An optional reference number or code (e.g., invoice number, transaction ID). | | **Total** | The total amount of the entry (sum of debit amounts, which equals sum of credit amounts). | | **Status** | The current status badge (Draft, Posted, or Voided). | ## Creating a Journal Entry ### Open the Create Form Click the **New Journal Entry** button on the journal entries list page. ### Enter Header Information | Field | Required | Description | |-------|----------|-------------| | **Date** | Yes | The date of the transaction. Defaults to today. | | **Description** | Yes | A description of what this entry records (e.g., "Monthly depreciation", "Adjusting entry for prepaid insurance"). | | **Reference** | No | An optional reference code or document number. | ### Add Debit and Credit Lines Each journal entry must have at least one debit line and one credit line. For each line: | Field | Description | |-------|-------------| | **Account** | Select the account from your chart of accounts. The dropdown shows account code and name. | | **Debit** | The debit amount for this line. Leave at 0 if this is a credit-only line. | | **Credit** | The credit amount for this line. Leave at 0 if this is a debit-only line. | | **Description** | An optional line-level description for additional detail. | Click **Add Line** to add more debit/credit lines as needed. > **Warning:** The total of all debit amounts must exactly equal the total of all credit amounts. The system will not allow you to save an unbalanced journal entry. A running balance indicator shows whether your entry is currently balanced. ### Review the Balance Before saving, check the balance indicator: - **Balanced** -- The entry is ready to be saved. Total debits equal total credits. - **Unbalanced** -- The entry cannot be saved. Adjust debit or credit amounts until they match. ### Save Click **Save** to create the journal entry in "Draft" status, or **Post** to save and immediately post it to the general ledger. ## Posting a Journal Entry Draft journal entries do not affect account balances until they are posted. ### Navigate to the Entry Click on a draft journal entry in the list to view its details. ### Click Post Click the **Post** button. The entry's status changes to "Posted" and account balances are updated accordingly. > **Info:** Once posted, a journal entry cannot be edited. If you need to correct a posted entry, you must create a new reversing journal entry or void the original and create a corrected entry. ## Voiding a Journal Entry Voiding cancels a journal entry and reverses its effect on account balances (if it was posted). ### Navigate to the Entry Click on the journal entry you want to void. ### Click Void Click the **Void** button. The entry's status changes to "Voided". If it was previously posted, the account balance changes are reversed. ## Common Journal Entry Examples ### Recording Depreciation | Line | Account | Debit | Credit | |------|---------|-------|--------| | 1 | Depreciation Expense | 500.00 | | | 2 | Accumulated Depreciation | | 500.00 | ### Adjusting Prepaid Insurance | Line | Account | Debit | Credit | |------|---------|-------|--------| | 1 | Insurance Expense | 200.00 | | | 2 | Prepaid Insurance | | 200.00 | ### Recording Owner's Investment | Line | Account | Debit | Credit | |------|---------|-------|--------| | 1 | Bank Account | 10,000.00 | | | 2 | Owner's Equity | | 10,000.00 | ### Correcting a Misposted Expense | Line | Account | Debit | Credit | |------|---------|-------|--------| | 1 | Correct Expense Account | 150.00 | | | 2 | Incorrect Expense Account | | 150.00 | ## Automatic vs. Manual Journal Entries Many journal entries in the system are created automatically: | Trigger | Description | |---------|-------------| | **Invoice Payment** | When a payment is recorded on an invoice, journal entries are automatically created to debit the bank account and credit accounts receivable (or vice versa for purchase invoices). | | **Credit/Debit Note Application** | Applying a credit or debit note creates journal entries to adjust the relevant accounts. | | **Treasury Transactions** | Deposits and withdrawals create journal entries automatically. | Manual journal entries are used for: - Period-end adjustments (depreciation, accruals, deferrals) - Corrections to previously posted entries - Non-standard transactions that do not fit standard workflows - Opening balance entries when setting up the system ## Tips for Managing Journal Entries - **Always include a clear description** for every journal entry. Future audits depend on understanding why each entry was made. - **Use references** to link journal entries to source documents (invoice numbers, receipt numbers, memo references). - **Review draft entries** before posting. Once posted, entries cannot be edited. - **Use the general ledger** to verify the impact of journal entries on individual account balances. - **Keep entries simple**. If a transaction is complex, consider breaking it into multiple simpler entries rather than one entry with many lines. --- Source: https://directsale.ai/help/accounting/general-ledger # General Ledger The General Ledger is the complete record of all financial transactions posted to each account in your chart of accounts. It provides a detailed, chronological view of every debit and credit entry for a selected account, along with a running balance. ## Accessing the General Ledger Navigate to **Dashboard > Accounting > Bookkeeping > General Ledger**. ## How the General Ledger Works The general ledger aggregates all posted journal entries for a specific account. When you select an account, you see every transaction that has affected that account, in date order, with a running balance that shows how the account balance changed over time. ## Using the General Ledger ### Select an Account At the top of the page, use the **Account** dropdown to select the account you want to review. The dropdown lists all accounts from your chart of accounts, showing both the account code and name. ### Set the Date Range Use the **Start Date** and **End Date** fields to filter transactions to a specific period. This is useful for: - Reviewing monthly or quarterly activity - Preparing period-end reports - Investigating specific timeframes ### Review the Transactions The ledger table shows all matching entries in chronological order. ## Ledger Table Columns | Column | Description | |--------|-------------| | **Date** | The date of the journal entry. | | **Entry Number** | The journal entry number. This can be used to navigate to the original journal entry for more detail. | | **Description** | The description from the journal entry explaining the transaction. | | **Debit** | The debit amount posted to this account in this entry (if any). | | **Credit** | The credit amount posted to this account in this entry (if any). | | **Balance** | The running balance of the account after this entry. This shows the cumulative effect of all entries up to and including this one. | ## Opening Balance At the top of the ledger, the **Opening Balance** is displayed. This represents the account's balance at the start of the selected date range (i.e., the sum of all transactions before the start date). The running balance in each row builds on top of this opening balance. > **Info:** If no date range is selected, the opening balance is zero and all transactions since the beginning of time are shown. When a date range is set, the opening balance reflects all activity before the start date. ## Reading the Running Balance The running balance in the "Balance" column tells you the cumulative balance after each entry: - For **asset and expense accounts** (normal debit balance): debits increase the balance, credits decrease it. - For **liability, equity, and revenue accounts** (normal credit balance): credits increase the balance, debits decrease it. ### Example For a "Bank Account" (asset, normal debit balance): | Date | Description | Debit | Credit | Balance | |------|-------------|-------|--------|---------| | Opening Balance | | | | 5,000.00 | | Jan 5 | Customer payment received | 2,000.00 | | 7,000.00 | | Jan 10 | Rent payment | | 1,500.00 | 5,500.00 | | Jan 15 | Sales revenue deposit | 3,500.00 | | 9,000.00 | ## Common Use Cases ### Account Reconciliation Use the general ledger to verify that account balances match external statements: 1. Select the bank account. 2. Set the date range to match the bank statement period. 3. Compare each entry against the bank statement line items. 4. The closing balance should match the bank statement ending balance. ### Investigating Discrepancies If a financial report shows an unexpected balance: 1. Open the general ledger for the account in question. 2. Review recent entries for unusual or incorrect postings. 3. Note the journal entry numbers of suspicious entries. 4. Navigate to those journal entries to review and potentially void or correct them. ### Period-End Review At the end of each month, quarter, or fiscal year: 1. Review key accounts (Cash, Receivables, Payables, Revenue, Expenses). 2. Verify that all transactions are properly posted. 3. Check that running balances make sense and match expected values. 4. Look for missing entries or incorrect amounts. ### Audit Trail The general ledger serves as a complete audit trail: - Every transaction affecting an account is recorded with its date, amount, and source journal entry. - The running balance provides traceability from the opening balance to the current balance. - Entry numbers link back to the original journal entries for full documentation. ## Tips for Using the General Ledger - **Check frequently used accounts** (bank, cash, receivables, payables) regularly to catch errors early. - **Use date filters** to narrow down to specific periods rather than scrolling through the entire history. - **Cross-reference with journal entries** when investigating specific transactions. The entry number column provides a direct link. - **Compare opening and closing balances** across periods to understand trends and spot anomalies. - **Export data** from the Reports section if you need the general ledger data in spreadsheet format for external analysis. --- Source: https://directsale.ai/help/accounting/tax-rates # Tax Rates Tax rates define the VAT, sales tax, or other tax percentages applied to your invoices and transactions. The DirectSale supports multiple tax rates per tenant, allowing you to handle different tax categories for different products, services, or jurisdictions. ## Accessing Tax Rates Navigate to **Dashboard > Accounting > Settings > Tax Rates**. ## Tax Rate Types Each tax rate is classified into one of four types: | Type | Description | |------|-------------| | **Standard** | The default/normal tax rate in your jurisdiction (e.g., 20% VAT, 10% sales tax). | | **Reduced** | A lower rate applied to specific categories of goods or services (e.g., 5% for food, 10% for books). | | **Zero** | A 0% rate applied to goods or services that are technically taxable but rated at zero. Different from exempt because zero-rated items may still need to be reported on tax returns. | | **Exempt** | Items completely exempt from tax. They are not included in tax calculations or tax return reporting. | ## The Tax Rates List The page displays all configured tax rates in a table with the following columns: | Column | Description | |--------|-------------| | **Name** | The display name of the tax rate (e.g., "Standard VAT", "Reduced Rate - Food"). | | **Code** | A short code for the tax rate (e.g., `STD`, `RED`, `ZERO`, `EXM`). | | **Rate** | The tax percentage (e.g., 20.00%). | | **Type** | The tax rate type badge (Standard, Reduced, Zero, Exempt). | | **Default** | Whether this is the default tax rate applied to new invoices. | | **Status** | Active or Inactive. | | **Actions** | Edit and Deactivate buttons. | ## Creating a Tax Rate ### Open the Add Dialog Click the **Add Tax Rate** button. A dialog window opens. ### Fill In Tax Rate Details | Field | Required | Description | |-------|----------|-------------| | **Name** | Yes | A descriptive name for the tax rate (e.g., "Standard VAT 20%", "Reduced Rate 5%"). | | **Code** | Yes | A short alphanumeric code (e.g., `VAT20`, `RED5`, `ZERO`). Must be unique. | | **Rate** | Yes | The tax percentage as a number (e.g., `20` for 20%, `5` for 5%, `0` for zero-rated). | | **Type** | Yes | Select from: Standard, Reduced, Zero, or Exempt. | | **Is Default** | No | Toggle to make this the default tax rate. When enabled, this rate is automatically applied to new invoices. Only one tax rate can be the default at a time. | ### Save Click **Save** to create the tax rate. ## Editing a Tax Rate Click the edit button on any tax rate row. The same dialog opens pre-filled with the current values. Make changes and click **Save**. ## Deactivating a Tax Rate Click the deactivate button on a tax rate. Deactivated rates: - Are no longer available for selection on new invoices. - Remain on existing invoices where they were previously applied. - Can be reactivated by editing the rate. > **Warning:** Deactivating a tax rate does **not** change any existing invoices that use it. Historical invoices retain their original tax rate calculations. ## Seeding Default Tax Rates If you have not yet configured any tax rates, click the **Seed Default Rates** button to automatically create a standard set of tax rates. This typically includes: - A standard rate (e.g., 20%) - A reduced rate (e.g., 10%) - A zero rate (0%) - An exempt rate (0%, type: exempt) > **Info:** The seed defaults provide a starting point. You should adjust the rates and names to match the tax regulations in your jurisdiction. Tax rates vary significantly by country and region. ## How Tax Rates Are Used Tax rates are applied in several places across the accounting module: | Location | How Tax Is Applied | |----------|-------------------| | **Sales Invoices** | The VAT Rate field on the invoice form uses the tax rate percentage to calculate the tax amount. | | **Purchase Invoices** | Similar to sales invoices, the VAT rate is applied to the purchase subtotal. | | **Credit/Debit Notes** | Each line item on a credit/debit note has a tax rate field. | | **Accounting Settings** | A global default VAT rate can be set that applies to all new invoices. | | **VAT Returns** | Tax rates determine how amounts are categorized in VAT return reports. | ## Tips for Managing Tax Rates - **Set one default rate** that matches your most commonly used tax rate. This saves time when creating invoices. - **Create separate rates** for different tax categories in your jurisdiction rather than changing the rate on individual invoices. - **Use meaningful codes** that your team can quickly identify (e.g., `VAT20` instead of `R1`). - **Do not delete** tax rates that are used on existing invoices. Deactivate them instead. - **Review rates periodically** as tax regulations change. Update the rate percentage when your jurisdiction changes its tax rates. --- Source: https://directsale.ai/help/accounting/payment-terms # Payment Terms Payment terms define the conditions under which invoices are expected to be paid. They specify the number of days after the invoice date by which payment is due. Configuring payment terms helps standardize your invoicing process and set clear expectations with customers and suppliers. ## Accessing Payment Terms Navigate to **Dashboard > Accounting > Settings > Payment Terms**. ## The Payment Terms List The page displays all configured payment terms with the following columns: | Column | Description | |--------|-------------| | **Name** | The display name of the payment term (e.g., "Net 30", "Due on Receipt"). | | **Code** | A short code for quick reference (e.g., `NET30`, `DOR`, `NET60`). | | **Due Days** | The number of days after the invoice date by which payment is expected. | | **Description** | An optional description explaining the terms in more detail. | | **Default** | Whether this is the default payment term applied to new invoices. | | **System** | Whether this is a system-generated term (from seeding). System terms may have restrictions on editing. | | **Status** | Active or Inactive. | | **Actions** | Edit and Deactivate buttons. | ## Creating a Payment Term ### Open the Add Dialog Click the **Add Payment Term** button. A dialog window opens. ### Fill In Details | Field | Required | Description | |-------|----------|-------------| | **Name** | Yes | A descriptive name (e.g., "Net 30", "Net 15", "Due on Receipt", "2/10 Net 30"). | | **Code** | Yes | A short unique code (e.g., `NET30`, `NET15`, `DOR`). | | **Due Days** | Yes | The number of days after the invoice date by which payment is due. Set to 0 for "Due on Receipt". | | **Description** | No | Additional details about the payment term (e.g., "Payment is due within 30 days of invoice date"). | | **Is Default** | No | Toggle to make this the default payment term. Only one term can be the default at a time. | ### Save Click **Save** to create the payment term. ## Common Payment Terms | Name | Code | Due Days | Description | |------|------|----------|-------------| | **Due on Receipt** | DOR | 0 | Payment is expected immediately upon receiving the invoice. | | **Net 7** | NET7 | 7 | Payment due within 7 days. | | **Net 15** | NET15 | 15 | Payment due within 15 days. | | **Net 30** | NET30 | 30 | Payment due within 30 days. The most common B2B term. | | **Net 45** | NET45 | 45 | Payment due within 45 days. | | **Net 60** | NET60 | 60 | Payment due within 60 days. Common for larger accounts. | | **Net 90** | NET90 | 90 | Payment due within 90 days. Used for long-term supplier relationships. | ## Editing a Payment Term Click the edit button on any payment term row. The dialog opens pre-filled with current values. Modify the fields and click **Save**. ## Deactivating a Payment Term Click the deactivate button on a payment term. Deactivated terms: - Are no longer selectable on new invoices. - Remain on existing invoices where they were applied. ## Seeding Default Payment Terms Click the **Seed Default Terms** button to automatically create a standard set of payment terms. This typically includes: - Due on Receipt (0 days) - Net 15 (15 days) - Net 30 (30 days) - Net 60 (60 days) > **Info:** Seeding is safe to run at any time. It will add default terms without affecting existing ones. However, if terms with the same codes already exist, duplicates may be created. ## How Payment Terms Affect Due Dates When you assign a payment term to an invoice: 1. The system takes the **invoice date** (issue date). 2. It adds the **due days** from the payment term. 3. The result becomes the invoice's **due date**. For example: - Invoice date: March 1, 2026 - Payment term: Net 30 (30 days) - Calculated due date: March 31, 2026 This calculated due date is used for: - Displaying the due date on printed invoices - Aging reports (how many days overdue) - Accounts receivable/payable tracking ## Tips for Managing Payment Terms - **Set "Net 30" as default** if most of your business operates on 30-day terms. This is the most universally accepted B2B payment term. - **Use shorter terms for new customers** until they establish a payment history (e.g., start with Net 15, then extend to Net 30). - **Create specific terms for key accounts** if certain customers or suppliers have negotiated unique payment periods. - **Review aging reports** to see which payment terms result in the best collection rates and adjust accordingly. - **Communicate terms clearly** on your invoices. The payment term name and due date should be prominently displayed. --- Source: https://directsale.ai/help/accounting/bank-reconciliation # Bank Reconciliation Bank reconciliation is the process of matching your internal accounting records with your bank's statements to ensure they agree. This helps you identify discrepancies, catch errors, find missing transactions, and maintain accurate financial records. ## Accessing Bank Reconciliation Navigate to **Dashboard > Accounting > Treasury > Reconciliation**. ## How Bank Reconciliation Works The reconciliation process compares two sets of data: 1. **Book transactions** -- The deposits and withdrawals recorded in your DirectSale treasury module. 2. **Bank statement lines** -- The transactions reported by your bank on your statement. The goal is to match each bank statement line to a corresponding book transaction, confirming that both records agree. ## Reconciliation Workflow ### Select a Bank Account At the top of the page, choose the bank account you want to reconcile from the dropdown. The dropdown lists all your configured treasury/bank accounts. ### Import a Bank Statement Click the **Import Statement** button to upload your bank statement. The system parses the statement and creates individual statement lines. Each line contains: | Field | Description | |-------|-------------| | **Date** | The date of the transaction as reported by the bank. | | **Description** | The transaction description from the bank statement. | | **Amount** | The transaction amount (positive for deposits, negative for withdrawals). | | **Reference** | Any reference number provided by the bank. | ### Review Statement Lines After import, each statement line appears in the reconciliation view with one of three statuses: | Status | Badge Color | Description | |--------|-------------|-------------| | **Matched** | Green | The statement line has been matched to a book transaction. | | **Unmatched** | Yellow | The statement line has not yet been matched to any book transaction. | | **Excluded** | Gray | The statement line has been excluded from reconciliation (e.g., it is a bank fee already accounted for separately). | ### Match Transactions There are two ways to match statement lines to book transactions: #### Auto-Match Click the **Auto-Match** button. The system automatically attempts to match statement lines with book transactions based on: - Amount (exact match) - Date (same or close dates) - Reference numbers (if available) Successfully matched pairs are marked as "Matched". #### Manual Match For lines that could not be auto-matched: 1. Click on an **unmatched** statement line. 2. The system shows potential matching book transactions. 3. Select the correct book transaction to create the match. 4. The statement line status changes to "Matched". ### Handle Unmatched Lines For statement lines that have no corresponding book transaction: | Action | Description | |--------|-------------| | **Create Transaction** | Create a new book transaction from the statement line. This is useful for bank-initiated transactions (fees, interest) that were not previously recorded. | | **Exclude** | Mark the line as excluded if it should not be part of the reconciliation (e.g., a pending transaction that reversed). | | **Leave Unmatched** | Keep it unmatched for now and investigate later. | ### Unmatch If a match was made incorrectly, click the **Unmatch** button on a matched pair. Both the statement line and the book transaction return to their unmatched state. ### Review the Reconciliation Summary At the bottom of the page (or in a summary panel), the reconciliation summary shows: | Field | Description | |-------|-------------| | **Book Balance** | The balance according to your internal records (sum of all book transactions). | | **Statement Balance** | The balance according to the bank statement (sum of all statement lines). | | **Difference** | The difference between the book balance and statement balance. When reconciliation is complete, this should be zero. | | **Matched Count** | The number of statement lines that have been matched. | | **Unmatched Count** | The number of statement lines still unmatched. | > **Info:** A successful reconciliation has a **zero difference** between the book balance and statement balance, with all statement lines either matched or excluded. ## Understanding the Reconciliation View The reconciliation page is divided into sections: ### Statement Lines Section Shows all imported bank statement lines with their match status. Each line displays the date, description, amount, reference, and status badge. ### Actions per Line | Action | When Available | Description | |--------|---------------|-------------| | **Match** | Unmatched lines | Opens the manual matching interface to pair with a book transaction. | | **Unmatch** | Matched lines | Removes the existing match, returning both sides to unmatched status. | | **Exclude** | Unmatched lines | Marks the line as excluded from reconciliation. | | **Create Transaction** | Unmatched lines | Creates a new treasury transaction from this statement line. | ## Common Reconciliation Scenarios ### Bank Fees Not Recorded If the bank charged a fee that you have not recorded: 1. Find the fee line in the statement (unmatched). 2. Click **Create Transaction** to add it to your books. 3. The system creates a withdrawal transaction and the line becomes matched. ### Timing Differences Checks you have written may not have cleared the bank yet, or deposits may be in transit: - These appear as unmatched book transactions (no corresponding statement line). - This is normal and expected. They will match in a future reconciliation period. ### Duplicate Transactions If the same transaction appears twice: 1. Match the correct occurrence. 2. Exclude the duplicate. ### Amount Discrepancies If the amounts do not match exactly (e.g., due to currency conversion fees): 1. Match the closest transaction manually. 2. Create a separate adjustment journal entry for the difference. ## Tips for Effective Bank Reconciliation - **Reconcile regularly** -- Monthly reconciliation is the minimum. Weekly is better for high-volume businesses. - **Start with auto-match** -- It saves significant time. Then handle the remaining unmatched items manually. - **Investigate all discrepancies** -- Do not exclude lines without understanding why they do not match. - **Keep the difference at zero** -- A non-zero difference at the end of reconciliation means there is an error somewhere. - **Use references** -- When recording payments and creating transactions, include reference numbers. This dramatically improves auto-match accuracy. - **Reconcile in chronological order** -- Start with the oldest unreconciled statement and work forward. > **Warning:** Bank reconciliation is a critical internal control. Skipping reconciliation or leaving persistent unmatched items can mask errors, fraud, or missing transactions. Make it a regular part of your accounting workflow. --- Source: https://directsale.ai/help/accounting/treasury # Treasury The Treasury module manages your business's bank accounts, cash funds, and online wallets. It provides a central place to track where your money is held, record deposits and withdrawals, and maintain accurate cash positions across all your financial accounts. ## Accessing Treasury Navigate to **Dashboard > Accounting > Treasury > Treasury**. ## Bank Account Types The system supports three types of treasury accounts: | Type | Description | |------|-------------| | **Bank** | A traditional bank account (checking, savings, or business account). | | **Cash** | A physical cash fund (petty cash, cash register, cash drawer). | | **Online Wallet** | A digital payment account (PayPal, Stripe balance, digital wallet). | ## The Bank Accounts List The treasury page displays all your configured bank accounts. Each account shows: | Field | Description | |-------|-------------| | **Name** | The account name you assigned (e.g., "Main Business Account", "Petty Cash"). | | **Bank Name** | The name of the financial institution (for bank-type accounts). | | **Account Number** | The bank account number. | | **Type** | The account type badge (Bank, Cash, Online Wallet). | | **Balance** | The current balance of the account. | | **Default** | Whether this is the default account for new transactions. | | **Actions** | Edit and Delete buttons. | ## Creating a Bank Account ### Open the Add Dialog Click the **Add Account** button. A dialog window opens. ### Fill In Account Details | Field | Required | Description | |-------|----------|-------------| | **Name** | Yes | A descriptive name for this account (e.g., "Chase Business Checking", "Petty Cash", "PayPal Business"). | | **Bank Name** | No | The name of the bank or financial institution. | | **Account Number** | No | The bank account number. | | **IBAN** | No | The International Bank Account Number. Used for international wire transfers. | | **Card Number** | No | A debit or credit card number associated with this account. | | **Type** | Yes | Select from: Bank, Cash, or Online Wallet. | | **Opening Balance** | No | The initial balance when setting up this account. Enter the current balance as of the setup date. | | **Currency** | No | The currency of this account (e.g., USD, EUR, GBP). Defaults to your tenant's configured currency. | | **Is Default** | No | Toggle to make this the default account. The default account is pre-selected in payment dialogs and transaction forms. Only one account can be the default at a time. | | **Notes** | No | Any additional notes about this account. | ### Save Click **Save** to create the account. > **Info:** The **Opening Balance** is important for accurate reconciliation. Set it to your actual account balance on the day you start using the system. All subsequent deposits and withdrawals will be tracked relative to this starting point. ## Editing a Bank Account Click the edit button on any account. The dialog opens pre-filled with the current values. Modify any field and click **Save**. ## Deleting a Bank Account Click the delete button on an account. A confirmation dialog appears. > **Warning:** Deleting a bank account also removes its transaction history. If the account has been used in reconciliation or payments, consider deactivating it instead. Only delete accounts that were created by mistake or have never been used. ## Treasury Transactions ### Accessing Transactions Click on any bank account to view its transactions, or navigate to **Dashboard > Accounting > Treasury > Treasury** and select the transactions view. ### Transaction Types | Type | Description | |------|-------------| | **Deposit** | Money coming into the account (customer payments, revenue, transfers in). | | **Withdrawal** | Money going out of the account (supplier payments, expenses, transfers out). | ### Transaction Summary At the top of the transactions page, summary cards show: | Card | Description | |------|-------------| | **Total Deposits** | The sum of all deposit transactions for the selected account and time period. | | **Total Withdrawals** | The sum of all withdrawal transactions for the selected account and time period. | | **Net** | The net amount (Total Deposits minus Total Withdrawals). | ### Filtering Transactions | Filter | Description | |--------|-------------| | **Bank Account** | Select which account's transactions to view. | | **Type** | Filter by transaction type: All, Deposit, or Withdrawal. | | **Date Range** | Start and end date pickers to filter by transaction date. | ### Creating a Transaction ### Open the Create Dialog Click the **Add Transaction** button. A dialog window opens. ### Fill In Transaction Details | Field | Required | Description | |-------|----------|-------------| | **Type** | Yes | Select Deposit or Withdrawal. | | **Bank Account** | Yes | Choose the account for this transaction. | | **Amount** | Yes | The transaction amount. | | **Description** | No | A description of the transaction (e.g., "Customer payment - Invoice INV-042", "Office supplies purchase"). | | **Reference** | No | A reference number (e.g., check number, wire transfer ID, receipt number). | | **Date** | No | The date of the transaction. Defaults to today. | ### Save Click **Save** to record the transaction. The account balance is updated immediately. ## Automatic Transactions Some transactions are created automatically by the system: | Source | Description | |--------|-------------| | **Invoice Payments** | When you record a payment on a sales invoice and select a bank account, a deposit transaction is automatically created. | | **Credit Note Application** | When a credit note is applied with a bank account selected, a withdrawal (refund) transaction is created. | | **Debit Note Application** | When a debit note is applied, a deposit (supplier refund) transaction is created. | These automatic transactions appear in the transaction list just like manual entries and are included in the account balance. ## Multiple Currencies Each bank account can be assigned a specific currency. This is useful for businesses that: - Maintain accounts in multiple currencies (e.g., USD and EUR accounts) - Receive payments in foreign currencies - Need to track currency-specific balances The transaction amounts are recorded in the account's currency. ## Tips for Treasury Management - **Set up all your real-world accounts** -- Create a treasury account for every bank account, cash fund, and digital wallet your business uses. - **Use the opening balance** -- Enter your actual current balance when setting up each account to ensure accuracy from day one. - **Record transactions promptly** -- Keep your treasury balances up to date by recording transactions as they occur. - **Designate a default account** -- Set your primary business account as the default so it is pre-selected in payment and transaction dialogs. - **Use references consistently** -- Include check numbers, transfer IDs, or receipt numbers in the reference field for easy matching during bank reconciliation. - **Reconcile regularly** -- Use the [Bank Reconciliation](https://directsale.ai/help/accounting/bank-reconciliation) feature to match your treasury transactions against bank statements. - **Separate business from personal** -- Use the Cash type for petty cash funds and ensure they are tracked separately from bank accounts. --- Source: https://directsale.ai/help/accounting/payment-instruments # Cheques and Other Payment Instruments Use **Accounting > Payment Instruments** to track received or issued instruments through their lifecycle. Recording an instrument is not proof that funds cleared. ## Before you start Prepare the contact and appropriate bank account. Check amount, currency, issue/due dates and the actual instrument reference. Use this screen only for financial events you are authorized to record. ## Create an instrument 1. Choose **New instrument**. 2. Select the supported type and Received or Issued direction. 3. Choose the contact and, where relevant, bank account. 4. Enter instrument number, positive amount, currency, due date and optional issue date. 5. Add drawer name/bank and notes where applicable. 6. Save and inspect the list entry and initial status. ## Record lifecycle events - **Deposit:** record presenting the instrument to the intended account. - **Clear:** select the bank account and confirm only after actual settlement. - **Endorse:** select the recipient contact when transferring the instrument. - **Bounce:** record a failed settlement using the available action. - **Cancel:** use the permitted cancellation action and confirmation. Actions appear according to current status and direction. A deposited cheque is not the same as a cleared cheque. Do not try every action to discover which one will succeed. ## Verify and troubleshoot After an action, reload status and inspect treasury/linked balances. If an action is unavailable, check the current lifecycle state. If the account list is empty, configure Treasury first. If rejected, inspect currency, contact, period and required fields. After a network error, inspect the instrument before repeating a settlement action. See [Treasury](https://directsale.ai/help/accounting/treasury), [Bank Reconciliation](https://directsale.ai/help/accounting/bank-reconciliation) and [Receipts & Payments](https://directsale.ai/help/accounting/operations). --- Source: https://directsale.ai/help/accounting/budgets # Budgets The Budgets module lets you plan and track financial targets for specific accounts on a monthly basis. By comparing budgeted amounts to actual results, you can monitor your financial performance, identify variances, and make informed business decisions. ## Accessing Budgets Navigate to **Dashboard > Accounting > Settings > Budgets**. ## How Budgets Work A budget entry links a specific **account** (from your chart of accounts) to a **year and month** with a planned **amount**. The system then compares this planned amount against the actual transactions posted to that account during that period, calculating the variance. ## The Budgets List The budgets page shows all budget entries with the following columns: | Column | Description | |--------|-------------| | **Account** | The account from the chart of accounts that this budget applies to. | | **Year** | The fiscal year for this budget entry. | | **Month** | The month within the fiscal year (1 through 12). | | **Budget Amount** | The planned/budgeted amount for this account in this period. | | **Actual Amount** | The actual amount recorded in transactions for this account during this period. | | **Variance** | The difference between the budget amount and actual amount (Budget - Actual). | | **Variance %** | The variance expressed as a percentage of the budget amount. | | **Notes** | Any notes or commentary about this budget entry. | | **Actions** | Edit and Delete buttons. | ## Understanding Variance | Variance | Meaning for Revenue Accounts | Meaning for Expense Accounts | |----------|------------------------------|------------------------------| | **Positive** | Actual revenue is below budget (underperformance). | Actual spending is below budget (savings). | | **Negative** | Actual revenue exceeds budget (outperformance). | Actual spending exceeds budget (overspending). | | **Zero** | Actual exactly matches the budget. | Actual exactly matches the budget. | > **Info:** The interpretation of positive vs. negative variance depends on the account type. For expense accounts, a positive variance (spending less than planned) is generally favorable. For revenue accounts, a negative variance (earning more than planned) is favorable. ## Creating a Budget Entry ### Open the Add Dialog Click the **Add Budget** button. A dialog window opens. ### Fill In Budget Details | Field | Required | Description | |-------|----------|-------------| | **Account** | Yes | Select the account from your chart of accounts. You can budget for any account, though expense and revenue accounts are most commonly budgeted. | | **Year** | Yes | The fiscal year (e.g., 2026). | | **Month** | Yes | The month (1 for January, 2 for February, etc.). | | **Amount** | Yes | The budgeted amount for this account in this period. | | **Notes** | No | Any notes explaining the budget figure (e.g., "Includes seasonal marketing campaign", "Reduced due to team downsizing"). | ### Save Click **Save** to create the budget entry. ## Editing a Budget Entry Click the edit button on any budget row. The dialog opens pre-filled with the current values. Modify the fields and click **Save**. ## Deleting a Budget Entry Click the delete button on a budget row to remove it. A confirmation dialog appears. ## Budget Planning Strategies ### Annual Budget Create 12 budget entries for each account (one per month) to establish a full annual budget: 1. Decide on your annual target for each key account. 2. Distribute the annual amount across months. You can use equal monthly amounts or adjust for seasonal patterns. 3. Create a budget entry for each month. ### Incremental Budgeting Base your budget on the previous period's actuals plus a growth factor: 1. Review last year's actual results for each account. 2. Apply an expected growth or reduction percentage. 3. Enter the adjusted amounts as budget targets. ### Zero-Based Budgeting Build your budget from scratch each period: 1. For each account, justify and plan every expenditure from zero. 2. Enter the planned amount regardless of historical spending. 3. This approach helps eliminate unnecessary costs. ## Monitoring Budget Performance ### During the Month While a month is in progress: - The **Actual Amount** column shows the running total of actual transactions. - The **Variance** updates in real time as new transactions are posted. - Use this to track whether you are on pace to meet your budget targets. ### At Month-End After the month closes: - Review the final variance for each budgeted account. - Investigate significant variances (both positive and negative). - Add notes to budget entries explaining any unusual variances. - Use insights to adjust future budget entries. ## Common Accounts to Budget | Account Category | Examples | |-----------------|----------| | **Revenue** | Sales Revenue, Service Revenue, Interest Income | | **Cost of Goods Sold** | Direct material costs, direct labor | | **Operating Expenses** | Rent, Utilities, Office Supplies | | **Marketing** | Advertising, Promotions, Events | | **Payroll** | Salaries, Benefits, Contractor Payments | | **Technology** | Software Subscriptions, Hosting, Equipment | ## Tips for Effective Budgeting - **Start with your most significant accounts** -- Budget the accounts that represent the largest amounts first. You can add detail to smaller accounts later. - **Use notes liberally** -- Document the reasoning behind each budget figure. This context is invaluable when reviewing variances later. - **Review variance monthly** -- Do not wait until year-end to check budget performance. Monthly reviews allow timely corrective action. - **Adjust budgets when warranted** -- If business conditions change significantly, update your budget entries to reflect the new reality rather than maintaining unrealistic targets. - **Align with your chart of accounts** -- Your budget structure is only as useful as your chart of accounts is organized. Make sure your accounts are granular enough for meaningful budget tracking. --- Source: https://directsale.ai/help/accounting/reports # Financial Reports The Reports section provides powerful financial reporting tools to analyze your business performance. You can generate profit and loss statements, revenue trend analyses, product margin breakdowns, expense analyses, aging reports, VAT returns, and more. ## Accessing Reports Navigate to **Dashboard > Accounting > Reports > Reports**. ## Report Types The reports page organizes its reports into tabs. Each tab provides a different perspective on your financial data. ### Profit & Loss (P&L) The Profit & Loss report (also called an Income Statement) summarizes your revenues, costs, and expenses over a selected period. **Structure of the P&L report:** | Section | Description | |---------|-------------| | **Revenue** | | | Online Sales | Revenue from online/standard invoices. | | Walk-in Sales | Revenue from walk-in (POS) sales. | | **Total Revenue** | Sum of all revenue sources. | | **Cost of Goods Sold (COGS)** | Direct costs of products sold. | | **Gross Profit** | Total Revenue minus COGS. | | **Expenses** | | | (By Category) | Each expense category is listed separately with its total amount. | | **Total Expenses** | Sum of all expense categories. | | **Net Profit** | Gross Profit minus Total Expenses. This is the bottom line of your business performance. | > **Info:** The P&L report is the most important financial report for understanding whether your business is making or losing money. Review it at least monthly to track your performance trajectory. ### Revenue Trend The Revenue Trend report displays your revenue over time, broken down by period (month by month). This helps you identify: - **Seasonal patterns** -- Which months typically see higher or lower revenue. - **Growth trends** -- Whether your revenue is trending upward or downward over time. - **Anomalies** -- Unusual spikes or dips that may warrant investigation. The report shows a bar chart visualization with each bar representing one month's total revenue and order count. ### Product Margins The Product Margins report analyzes the profitability of your individual products. For each product, it shows: | Metric | Description | |--------|-------------| | **Product Name** | The name of the product. | | **Units Sold** | Total number of units sold in the selected period. | | **Revenue** | Total revenue generated from this product. | | **Cost** | Total cost of goods sold for this product. | | **Margin** | Revenue minus Cost. | | **Margin %** | Margin as a percentage of revenue. | This helps you identify which products are most profitable and which may need pricing adjustments. ### Expense Breakdown The Expense Breakdown report provides a detailed analysis of your spending by category. It includes: - A list of all expense categories with their total amounts. - The percentage of total expenses each category represents. - Visual bars showing relative spending across categories. This report is useful for identifying cost centers, spotting trends in spending, and finding areas where costs can be reduced. ## Date Range Filtering All reports support date range filtering: | Filter | Description | |--------|-------------| | **Start Date** | The beginning of the reporting period. | | **End Date** | The end of the reporting period. | By default, reports show data for the current month. You can change the date range to view: - Monthly data (e.g., January 1 to January 31) - Quarterly data (e.g., January 1 to March 31) - Annual data (e.g., January 1 to December 31) - Custom periods for specific analysis needs ## Additional Report Tools Beyond the main reports page, the Accounting module provides additional reporting capabilities accessible from the Reports tab navigation: ### Aging Reports Navigate to **Dashboard > Accounting > Reports > Aging**. Aging reports show the age of outstanding invoices grouped into time buckets: | Bucket | Description | |--------|-------------| | **Current** | Invoices not yet due. | | **1-30 days** | Invoices 1 to 30 days past due. | | **31-60 days** | Invoices 31 to 60 days past due. | | **61-90 days** | Invoices 61 to 90 days past due. | | **90+ days** | Invoices more than 90 days past due. | There are two types of aging reports: | Type | Description | |------|-------------| | **Accounts Receivable (AR) Aging** | Shows outstanding sales invoices grouped by age. Helps you identify customers who are slow to pay. | | **Accounts Payable (AP) Aging** | Shows outstanding purchase invoices grouped by age. Helps you prioritize which supplier bills to pay first. | ### VAT Returns Navigate to **Dashboard > Accounting > Reports > VAT Returns**. VAT return reports summarize the VAT (value-added tax) collected and paid during a specific period: | Field | Description | |-------|-------------| | **Output VAT** | The total VAT collected from customers on sales invoices. | | **Input VAT** | The total VAT paid on purchase invoices. | | **Net VAT** | Output VAT minus Input VAT. This is the amount owed to (or refundable from) the tax authority. | ### Audit Log Navigate to **Dashboard > Accounting > Reports > Audit Log**. The audit log provides a chronological record of all accounting actions performed in your system, including: - Invoice creation, approval, and payment - Journal entry posting and voiding - Account creation and modification - Settings changes This is essential for internal controls, compliance, and audit trail requirements. ### Data Export Navigate to **Dashboard > Accounting > Reports > Export**. The export feature allows you to download your financial data in various formats for external analysis, backup, or tax filing purposes. Available exports may include: | Export | Description | |--------|-------------| | **General Ledger** | Complete ledger data for all accounts. | | **Trial Balance** | Summary of all account balances. | | **Invoices** | Sales and purchase invoice data. | | **Transactions** | Treasury transaction data. | ## Using Reports Effectively ### Set Your Reporting Period Before analyzing any report, set the appropriate date range. For monthly reviews, use the calendar month. For quarterly reviews, span three months. ### Start with the P&L The Profit & Loss report gives you the big picture. Check whether you are profitable and compare against previous periods or budget targets. ### Drill Into Details If the P&L shows unexpected results: - Check the **Revenue Trend** to see if revenue is the issue. - Check the **Expense Breakdown** to see if costs are higher than expected. - Check **Product Margins** to see if specific products are underperforming. ### Review Aging Reports After the P&L, check aging reports to understand your cash flow position: - How much money is owed to you (AR Aging)? - How much do you owe to suppliers (AP Aging)? - Are any amounts significantly overdue? ### Take Action Based on your report analysis: - Follow up with customers on overdue invoices. - Adjust pricing on low-margin products. - Reduce spending in high-expense categories. - Update budgets to reflect actual performance. ## Tips for Financial Reporting - **Establish a reporting routine** -- Review P&L monthly, aging reports weekly, and detailed reports quarterly. - **Compare periods** -- Always compare the current period to the previous period (month-over-month or year-over-year) to identify trends. - **Use the budget module** alongside reports to compare actual results against your planned targets. - **Export data** for deeper analysis in spreadsheet applications when the built-in reports do not provide the specific view you need. - **Share reports** with stakeholders by printing or exporting them for team meetings and investor updates. - **Act on insights** -- Reports are only valuable if you use them to make decisions. Identify actionable items from each review. --- Source: https://directsale.ai/help/accounting/aging-report # Receivables and Payables Aging Open **Accounting > Reports > Aging** to inspect outstanding customer receivables and supplier payables by age. This is a report, not a payment action. ## Before you start Enter invoices, due dates, payments and adjustments accurately. Select a meaningful as-of date. Drafts, missing payment allocations or incorrect due dates can make the report differ from your expectations. ## Read the report 1. Open Aging and choose the **As of** date. 2. Select receivables (AR) for money customers owe, or payables (AP) for money owed to suppliers. 3. Inspect summary totals and the age buckets shown in the table. 4. Identify the relevant contact and compare the reported balance with its invoices and payments. 5. Review older balances first and investigate credits or unapplied payments before following up. Aging groups outstanding balances relative to the reporting date and due-date information. It does not tell you that a bank transfer has arrived or automatically remind a customer. ## Verify and troubleshoot Use the same as-of date when comparing contact statements and other reports. If a paid invoice remains outstanding, inspect the saved payment and its allocation rather than marking it paid again. If a supplier/customer is missing, confirm there was an outstanding eligible balance at the selected date. Correct underlying transactions using their normal approval/posting workflow, then reload the report. Do not edit a displayed total as a substitute for a source-document correction. --- Source: https://directsale.ai/help/accounting/vat-returns # VAT Returns The **Accounting > VAT Returns** screen prepares and tracks VAT return records from accounting data. Tax rates, filing eligibility and deadlines must be confirmed for your business; this guide describes the software workflow, not tax advice. ## Before you start Review tax configuration, posted sales/purchases, credit/debit notes and the reporting period. Reconcile the source reports first. Do not assume a button called Submit proves acceptance by a tax authority. ## Prepare and review 1. Open VAT Returns and choose Generate. 2. Enter period start and end dates. 3. Generate the return and open its detail view. 4. Compare output/input VAT and totals with the source invoices and tax reports. 5. Check that adjustments belong to the correct period and that transactions are not duplicated. 6. Use the available Submit action only after the responsible person approves the return. 7. Reload the detail and retain the resulting status/reference. ## Verify submission separately Distinguish a return marked submitted in DirectSale from a government portal receipt. Unless an explicit connected filing workflow supplies confirmation, complete and verify any required external filing separately. Do not submit a second return merely because a browser response timed out. ## Troubleshooting Unexpected total: compare period, tax rates, invoice status and adjustments. No data: confirm eligible posted activity exists. A failed action can reflect validation, permissions or provider availability; preserve the current record and report the exact error. See [Tax Rates](https://directsale.ai/help/accounting/tax-rates), [Reports](https://directsale.ai/help/accounting/reports) and [Accounting Periods](https://directsale.ai/help/accounting/periods). --- Source: https://directsale.ai/help/accounting/audit-log # Accounting Audit Log Open **Accounting > Audit Log** to investigate recorded accounting changes. It is a read-only history view, not an undo button. ## Find an event 1. Select the relevant entity type, such as an invoice or transaction. 2. Filter the action and start/end dates. 3. Inspect the actor, entity reference and event time. 4. Open the changes dialog to inspect available before/after details. 5. Follow the source document in its normal accounting screen to understand its current state. 6. Clear filters if the expected event is not visible and check additional pages. ## Use the record correctly Compare the same document ID, not just a similar invoice number or amount. A historical event does not prove the document is still in that state; later events may supersede it. Corrections must use the permitted void, reversal, edit or approval workflow for the source document. ## Verification and troubleshooting If a record appears missing, check tenant, date range, entity/action filters, pagination and your role. Some operational events may be in order notifications, sync logs or stock history rather than the accounting audit log. Provide Support with the entity reference and approximate time, not a dump of unrelated customer data. See [Discrepancy Checks](https://directsale.ai/help/accounting/discrepancies) for consistency investigation and [Approvals](https://directsale.ai/help/accounting/approvals) for approval history. --- Source: https://directsale.ai/help/accounting/discrepancies # Accounting Discrepancy Checks Use **Accounting > Discrepancies** to inspect detected consistency issues. Findings can include source-document, posting or inventory inconsistencies; a finding is not automatically proof of fraud. ## Run and inspect 1. Open the page and wait for the report. 2. Inspect summary totals and filter by severity: Critical, High, Medium or Low. 3. Search for the source document or finding type. 4. Read the evidence and source references for an individual finding. 5. Compare the actual invoice, journal, payment or inventory record before deciding how to correct it. ## Resolve eligible findings Use an individual Resolve action only when the finding is marked eligible for automatic correction and the consequence is understood. The bulk resolution action applies supported automatic repairs; it does not make every finding safe to fix or resolve every issue. After resolution, reload the report and inspect the original source record and audit history. Some issues require manual correction through their normal workflow or Support. Do not repeat a bulk repair immediately after a timeout. ## Verification and troubleshooting A nonzero report after repair may contain remaining unsupported findings, newly detected items or a failed repair. Compare the exact source references and error, not just the count. If the report cannot load, check account/module access and service availability; an unavailable report is not a clean audit result. See [Audit Log](https://directsale.ai/help/accounting/audit-log), [Inventory](https://directsale.ai/help/accounting/inventory) and [Journal Entries](https://directsale.ai/help/accounting/journal-entries). --- Source: https://directsale.ai/help/accounting/export # Exporting Accounting Data Open **Accounting > Data Export** to generate supported accounting files. Exported files can contain customer, supplier and financial information; keep them in an authorized location. ## Generate and download 1. Choose a new export. 2. Select the relevant data type, such as invoices, contact balances, stock movements, product kardex or journal entries from the available list. 3. Choose a supported format: CSV, XLSX, PDF or JSON where offered. 4. Set the relevant period/filters in the form. 5. Generate the export and inspect its status in the history. 6. Download a completed record and verify filename, format, row count and reporting period. 7. Check representative totals and currency before handing the file to an accountant or importing it elsewhere. ## Understand statuses Pending means work is not yet confirmed complete. Completed permits retrieval of the generated content; Failed requires investigation. Refresh the history after a connection problem before creating the same export again. An export is not a full platform backup and is not evidence that a tax filing or external accounting import succeeded. ## Troubleshooting and privacy Empty file: inspect type, date filters and whether source records exist in the intended status. Download failure: reopen the completed history entry and check the exact error. Unexpected total: compare filters and currency with the source report. Share only the necessary file; never add access keys to an export. Use [Backup and Restore](https://directsale.ai/help/settings/backup) for the separate backup workflow. --- Source: https://directsale.ai/help/accounting/inventory # Inventory, Warehouses, Transfers, Fulfillment and Tracking Open **Accounting > Inventory**. The tabs are Overview, Warehouses, Transfers, Fulfillments, Counts and Tracking. Access and actions depend on your role and enabled modules. ## Before you start Create products with correct SKUs, variants and units. Decide where physical stock is held and check whether the tenant uses a hub's inventory. A product's total stock, a warehouse balance, reserved stock and physically counted stock are different values. ## Warehouses and overview 1. Open Warehouses and create a warehouse using its name/address and other required fields. 2. Review active/default settings offered in the form and save. 3. Expand/open warehouse inventory and search the intended product. 4. Compare the Overview totals with the selected warehouse and variant. 5. Edit warehouse details through the same form. Do not delete a warehouse holding stock or used by live operations simply to rename it. ## Transfer stock 1. Open Transfers and create a draft with source and destination warehouses. 2. Add the actual products/variants and quantities. 3. Review the draft, then use Ship when the stock leaves the source. 4. At the destination, open Receive and record the received quantities. 5. Verify the Received status and both warehouse balances. 6. Use Cancel only when appropriate for the current transfer state. Draft, In transit, Received and Cancelled are different states. Creating a transfer is not proof that goods arrived. After a timeout, inspect its status before recording receipt again. ## Fulfillment 1. Open Fulfillments and create the supported fulfillment for the order and warehouse. 2. Pick/scan the correct SKU and verify each item and quantity. 3. Use Pack when picking is complete. 4. Choose the actual carrier, local delivery or store-pickup workflow offered. 5. Enter required shipment/tracking information or use the label workflow when ready to purchase a label. 6. Update delivery/pickup status only after the real event. Buying a label can incur a carrier charge. A Packed or Ready for pickup record does not mean delivered, and delivery does not by itself confirm payment. See [Order Fulfillment](https://directsale.ai/help/orders/fulfillment). ## Physical stock counts 1. Open Counts, choose the warehouse/scope and create a count. 2. Open its detail and enter physically counted quantities. 3. Save the count items and review discrepancies. 4. Complete the count only after checking the proposed corrections. 5. Inspect resulting stock history and balances. Cancel an unwanted unfinished count rather than completing invented quantities. Avoid making unrelated stock edits while counting without a reconciliation plan. Completing a count is not a harmless preview. ## Lots and serial tracking 1. Open Tracking and choose Lots or Serials. 2. Filter warehouse/status and search for the intended product. 3. Create the lot with the requested identifiers/dates/quantity information, or add serial numbers with the appropriate product and optional lot. 4. Save and inspect the records. 5. Use lot-status controls only when their operational meaning is understood. A parent SKU is not a unique serial number. Keep identifiers accurate and do not reuse a serial to represent multiple physical units. ## Verify and troubleshoot Missing stock: check warehouse, variant, unit conversion, reservations, count/transfer status and linked hub. Scan fails: compare the barcode/SKU with the selected order item. Action unavailable: check role, state and required fields. For mismatched totals, review source movements rather than replacing the quantity blindly. Use [Linked Stores](https://directsale.ai/help/multichannel/linked-stores), [Units and Opening Balances](https://directsale.ai/help/accounting/operations), and [Discrepancy Checks](https://directsale.ai/help/accounting/discrepancies). --- Source: https://directsale.ai/help/accounting/exchange-rates # Accounting Exchange Rates Use **Accounting > Exchange Rates** to maintain dated conversion rates and inspect conversions. This screen does not automatically reprice the product catalog or select subscription-plan prices. ## Set a rate 1. Select **Set rate**. 2. Choose base currency and target currency. 3. Enter the intended conversion rate and effective date. 4. Save and inspect the currency pair/date in the list. 5. Use base/target filters to find the saved rate. Confirm the direction before saving: a base-to-target rate is not its inverse. Use a rate source and accounting policy appropriate for your business; the form does not prove the entered rate is a live market quote. ## Test a conversion Enter amount, From currency and To currency in the conversion tool, then run Convert. If you swap currencies, review the new direction and run it again. Compare a simple known amount to ensure the interpretation is correct. ## Verification and troubleshooting Missing rate: check pair and date. Unexpected amount: verify decimal precision and direction. Do not repeatedly overwrite rates to make a historic report match without understanding the accounting policy. Changing the tenant currency is a separate regional-default action and does not convert existing numeric prices. Subscription plans use explicitly configured prices per currency. See [General Settings](https://directsale.ai/help/settings/general) and [Billing](https://directsale.ai/help/billing/index). --- Source: https://directsale.ai/help/accounting/channels # Accounting Sales Channels Use **Accounting > Sales Channels** to label sales sources and inspect their revenue. Creating an accounting channel does not connect a messaging bot, marketplace API or another tenant. ## Set up a channel 1. Open Sales Channels and select **Add Channel**. 2. Enter a clear name, such as your website or marketplace. 3. Choose Website, Marketplace, Social or Manual. 4. Enter the optional platform label. 5. Save and verify the active channel in the list. 6. Use Edit for corrections or Deactivate when the channel should no longer be used. ## Review revenue Choose From and To dates in the Channel Revenue Report. Compare revenue, fees, net revenue and invoice count by channel. A channel with no attributed invoices may have no reported revenue; adding its name does not backfill all historical sales. ## Verify and troubleshoot If revenue is missing, inspect invoice source/channel attribution and reporting period before creating a duplicate channel. If net revenue differs from gross sales, inspect reported fees and the underlying invoices. A deactivated accounting label does not automatically disconnect an external store. See [Connections](https://directsale.ai/help/multichannel/connecting-channels), [Messaging Channels](https://directsale.ai/help/channels/index) and [Linked Stores](https://directsale.ai/help/multichannel/linked-stores) for the actual connection workflows. --- Source: https://directsale.ai/help/accounting/approvals # Accounting Approvals Open **Accounting > Approvals** to review documents awaiting authorization and inspect approval history. ## Before you start Use an authorized role and know your business's approval policy. Read the source invoice/transaction before approving. Approval may allow posting or downstream processing; it is not merely marking a notification as read. ## Review a pending item 1. Open **Pending**. 2. Identify the document type and source reference. 3. Review contact, currency, amounts, items, tax and supporting information in the source document. 4. Select **Approve** if correct, or **Reject** if it needs correction. 5. For rejection, enter a useful reason even when the field is optional. 6. Reload the queue and source document to confirm the resulting status. ## Review history Open **History**, choose the available type filter and inspect action, actor, reason, entity reference and date. Use pagination for older events. No pending items means nothing is currently awaiting approval in that view, not that every document is paid or posted. ## Troubleshooting Missing item: confirm it was submitted and not already acted on, and check the account/role. Rejected action: inspect current status and permission requirements. After a timeout, check History before clicking again. Approval policy is configured in [Accounting Settings](https://directsale.ai/help/accounting/settings). Use [Audit Log](https://directsale.ai/help/accounting/audit-log) for broader recorded changes. --- Source: https://directsale.ai/help/accounting/periods # Accounting Periods and Year Close Use **Accounting > Periods** to control posting dates and close reporting periods. These operations affect which accounting entries can be posted; they should be performed by the responsible accounting user. ## Create a period 1. Select **New Period**. 2. Enter a recognizable period name and start/end dates. 3. Confirm the range does not overlap an existing period. 4. Save and inspect its Open status. Once periods exist, closed or locked periods can block posting for their dates. A posting failure should not be bypassed by changing an invoice to an incorrect date. ## Close, lock or reopen Before Close, reconcile the period and review pending documents and reports. Select the intended period, use the action and read its confirmation. Lock is a distinct restriction; Reopen is available only when authorized and supported for that state. **Close Year** transfers the period's profit/loss to retained earnings through the supported year-close workflow. It is not interchangeable with simply closing a month. Review the confirmation and resulting entries with the responsible accountant. ## Verify and troubleshoot Reload the period status, inspect relevant journals/reports and confirm later postings use the intended open period. For overlap or posting errors, check date boundaries and current period status. If a close action times out, inspect status and journal history before retrying. Do not reopen a finalized period merely to make an unexplained discrepancy disappear. See [Discrepancy Checks](https://directsale.ai/help/accounting/discrepancies), [Reports](https://directsale.ai/help/accounting/reports) and [Journal Entries](https://directsale.ai/help/accounting/journal-entries). --- Source: https://directsale.ai/help/accounting/settings # Accounting Settings The Accounting Settings page lets you configure the foundational parameters that govern how your accounting module operates. These settings affect currency formatting, tax behavior, invoice numbering, approval workflows, and your business identity on printed documents. ## Accessing Accounting Settings Navigate to **Dashboard > Accounting > Settings > Settings**. ## Settings Overview The settings page is organized into logical sections. All changes are saved when you click the **Save** button at the bottom of the page. ## Currency Settings These settings control how monetary values are displayed throughout the accounting module. | Setting | Description | |---------|-------------| | **Currency** | The primary currency for your business (e.g., `USD`, `EUR`, `GBP`, `IRR`, `AED`, `TRY`). This is the default currency used on new invoices and reports. | | **Currency Symbol** | The symbol displayed alongside currency values (e.g., `$`, `€`, `£`, `﷼`). | | **Currency Position** | Where the currency symbol appears relative to the number. Options: **Before** (e.g., $100.00) or **After** (e.g., 100.00$). | | **Decimal Places** | The number of decimal places for displaying monetary values. Common values: `2` for most currencies, `0` for currencies that do not use decimal subdivision (e.g., IRR, JPY). | > **Info:** Currency settings affect the **display format** only. The underlying data is stored with full precision regardless of the decimal places setting. This ensures no rounding errors accumulate in your financial data. ## Tax Settings These settings configure the default tax behavior for your invoices. | Setting | Description | |---------|-------------| | **VAT Enabled** | Toggle to enable or disable VAT/tax calculations globally. When disabled, no tax is applied to invoices by default. | | **VAT Rate** | The default VAT/tax rate percentage (e.g., `20` for 20%). This rate is pre-filled on new invoices but can be overridden per invoice. | | **VAT Number** | Your business's VAT registration number (or equivalent tax ID). This is displayed on printed invoices for tax compliance. | > **Warning:** Disabling VAT does **not** remove tax from existing invoices. It only affects the default behavior for new invoices. Existing invoices retain their original tax calculations. ## Invoice Numbering These settings control how invoice numbers are generated. | Setting | Description | |---------|-------------| | **Sales Invoice Prefix** | The prefix prepended to sales invoice numbers (e.g., `INV-`, `SI-`, `SALE-`). The system auto-generates a sequential number after the prefix. | | **Purchase Invoice Prefix** | The prefix prepended to purchase invoice numbers (e.g., `PI-`, `PUR-`, `BUY-`). | ### How Invoice Numbers Work Invoice numbers are generated automatically in the format: `[Prefix][Sequential Number]` For example, with a sales invoice prefix of `INV-`: - First invoice: `INV-00001` - Second invoice: `INV-00002` - And so on... > **Info:** Changing the prefix does not reset the sequential counter. If you change from `INV-` to `SI-` after creating 100 invoices, the next invoice will be `SI-00101`, not `SI-00001`. ## Approval Workflow | Setting | Description | |---------|-------------| | **Approval Enabled** | Toggle to enable or disable the approval workflow for invoices. When enabled, invoices go through a Draft > Pending Approval > Approved flow. When disabled, invoices can skip the approval step. | ### When Approval Is Enabled 1. New invoices are created as **Draft**. 2. The creator submits the invoice for approval (status changes to **Pending Approval**). 3. An authorized user (admin, owner, or manager) reviews and approves or rejects the invoice. 4. Approved invoices can then have payments recorded. ### When Approval Is Disabled 1. New invoices are created as **Draft**. 2. The creator can directly submit the invoice, and it moves to **Approved** status immediately. 3. Payments can be recorded right away. ## Fiscal Year | Setting | Description | |---------|-------------| | **Fiscal Year Start Month** | The month your fiscal year begins. Options: 1 (January) through 12 (December). Most businesses use January (1), but some use April (4), July (7), or October (10) depending on regional tax regulations. | The fiscal year setting affects: - How annual reports are calculated - The default date ranges for financial reports - Budget year boundaries ## Business Information These fields provide your business identity, which appears on printed invoices, PDF exports, and other official documents. | Setting | Description | |---------|-------------| | **Business Name** | Your registered business name as it should appear on invoices and documents. | | **Business Address** | Your business's physical address. | | **Business Phone** | Your business's phone number. | | **Tax ID** | Your business's tax identification number (EIN, TIN, VAT number, etc.). | | **Invoice Footer Note** | A custom text that appears at the bottom of every printed/exported invoice. Use this for payment instructions, terms and conditions, or a thank-you message (e.g., "Thank you for your business. Payment is due within 30 days."). | ## Saving Settings ### Make Your Changes Modify any of the settings fields described above. ### Click Save Click the **Save** button at the bottom of the page. All changes are saved at once. ### Verify The page refreshes with the saved values. Verify that your changes were applied correctly. ## Recommended Initial Setup When first configuring your accounting module, set up these settings in this order: ### Configure Currency Set your primary currency, symbol, position, and decimal places. This affects how all monetary values are displayed. ### Enable and Set VAT If your business is VAT/tax registered: 1. Enable the VAT toggle. 2. Set the default rate to your standard tax rate. 3. Enter your VAT registration number. ### Set Invoice Prefixes Choose meaningful prefixes for your sales and purchase invoices. Keep them short and recognizable. ### Configure Approval Workflow Decide whether invoices need approval before payment: - **Enable** if multiple team members create invoices and you want oversight. - **Disable** if you are a solo operator or trust all invoice creators. ### Set Fiscal Year Set your fiscal year start month to match your tax reporting obligations. ### Enter Business Information Fill in your business name, address, phone, and tax ID. These appear on printed invoices and PDF exports. ### Add Invoice Footer Note Write a professional footer message for your invoices. This is your chance to include payment instructions, late payment policies, or a friendly thank-you. ## How Settings Affect Other Modules | Setting | Impact | |---------|--------| | **Currency** | Default currency on new invoices, reports formatting, dashboard display. | | **VAT Rate** | Pre-filled on new invoice forms. | | **VAT Number** | Displayed on printed invoices and VAT returns. | | **Invoice Prefixes** | Used in automatic invoice number generation. | | **Approval Enabled** | Changes the invoice workflow and available actions. | | **Fiscal Year** | Affects annual report calculations and budget periods. | | **Business Info** | Appears on printed invoices, PDFs, and official documents. | ## Tips for Accounting Settings - **Set up settings before creating your first invoice** -- This ensures all invoices use the correct currency, tax rate, and numbering from the start. - **Use a professional invoice footer** -- This is visible to your customers. Include payment instructions and your bank details if applicable. - **Enable approval workflow** for teams -- If multiple people create invoices, the approval workflow adds an important quality control step. - **Keep your business information up to date** -- Changes to your business address, phone, or tax ID should be reflected here immediately. - **Match fiscal year to your tax obligations** -- Using the wrong fiscal year start month can cause confusion in annual reports and tax filings. --- Source: https://directsale.ai/help/accounting/operations # Accounting Operations: Units, Installments, Vouchers and Stock Workflows Open **Accounting > Operations**. The tabs are Measurement Units, Installments, Receipts & Payments, Opening Balances, Consignment and Manufacturing. Owners, admins and accountants can access the full operations area; managers are limited to the supported consignment/manufacturing tabs. ## Before you start Prepare products, contacts, bank/cash accounts, warehouses and the appropriate accounting access. Check currency, posting date and open period. These actions can change balances or inventory; inspect the result before repeating a request after a timeout. ## Measurement Units 1. Open Measurement Units and create a unit with name, symbol, dimension and precision. 2. Select the product to configure. 3. Enable its permitted units and assign exactly one **base** unit. 4. Set sale, purchase or alternate roles, conversion factors and quantity precision. 5. Save, reopen the product's unit setup, and verify conversions with a small example. For example, if a box represents multiple individual items, confirm the factor is relative to the selected base unit, not reversed. Used units may not be removable. Unit precision affects accepted quantities; it does not change a product's physical weight/dimensions. ## Installments 1. Select Customer receivable or Supplier payable. 2. Choose an eligible unpaid sales or purchase invoice. Proforma, paid, cancelled or rejected invoices are not offered. 3. Set installment count, first due date, frequency, any agreed interest amount and notes. 4. Create the plan and inspect the schedule and outstanding balance. 5. To record an actual payment, choose an active/overdue plan, bank account, amount and date, then submit. 6. Review the invoice/payment result; use Cancel plan only for the intended schedule. Creating installments does not automatically charge a customer's bank or activate a subscription payment gateway. Record only payments actually received or made. ## Receipts & Payments 1. Choose Receipt or Payment, contact, optional invoice, date, description and reference. 2. Add one or more lines, selecting the method, bank/cash account, amount and reference. 3. For cheque or promissory-note lines, provide instrument number and due date. 4. Review the total and linked invoice, then save. 5. Inspect the voucher, related balance and payment instrument where applicable. 6. Use Void for a correction only after reviewing the consequences; do not duplicate the same receipt in another screen. ## Opening Balances 1. Choose the opening date and description. 2. Add account, contact, bank/cash or inventory lines. 3. Supply the corresponding account/contact/bank or product and warehouse. For inventory, check quantity and cost. 4. Review the auto-balance option and all debit/credit effects with the responsible accountant. 5. Save a draft, inspect it, then Post when correct. 6. Verify opening balances and inventory. Use Reverse for a posted correction where allowed. Do not import opening balances and also manually recreate the same historical entries. A draft does not have the same effect as a posted opening document. ## Consignment 1. Choose Received from owner or Issued to consignee. 2. Select contact, start date, commission percentage, settlement days and notes. 3. Add product, warehouse, quantity, unit cost and sale price; save the agreement. 4. Activate the agreement after reviewing it. 5. Use Record sale or Record return and enter the actual quantities, then Post. 6. Check sold/returned quantities and remaining stock before Close. Consignment stock and owned stock are not interchangeable. Do not record more than the actual remaining quantity, and do not treat closing an agreement as a customer refund. ## Manufacturing 1. Create a **bill of material (BOM)**: output product, BOM name, output quantity and component products with quantities and scrap percentages. 2. Save and review the BOM version. Activate/deactivate versions as needed; a new order should reference the intended active version. 3. Create a production order with BOM, warehouse, production quantity and planned date. 4. Review and Release the order using the available action. 5. After actual production, choose Complete and confirm the inventory movements. 6. Inspect component consumption and output stock. Cancel is a distinct action, not proof that previously completed movements were reversed. ## Verification and troubleshooting Missing product/account: check active status, permissions and setup lists. Posting blocked: inspect period status and validation details. Insufficient stock: verify the chosen warehouse, variant and units. Duplicate-looking balances: compare source document IDs before making adjustments. A success message should be followed by a reloaded document and the expected ledger/stock movement. For an unknown result, inspect history or [Support](https://directsale.ai/help/getting-started/support) before retrying a balance-changing action. --- Source: https://directsale.ai/help/accounting/financial-analysis # AI Financial Analysis Open **Accounting > Reports > Financial Analysis** for an evidence-linked interpretation of calculated accounting metrics. The accounting engine supplies the figures; the AI explains them and does not replace the ledger. ## Before you start Use a valid reporting range and sufficiently complete posted accounting data. Check missing costs, unbalanced reports and mixed currencies first. This tool is not professional financial or tax advice and does not post adjustments or move money. ## Generate and review 1. Select start and end dates. 2. Select **Generate analysis**. Changing dates alone does not call the AI. 3. Review the selected and comparison periods and generated timestamp. 4. Inspect **Verified financial metrics**, including revenue, expenses, profit, margin, cash and overdue balances. 5. Open the listed sources and compare figures with the source reports. 6. Read data-quality warnings before the executive summary, strengths, risks and recommendations. 7. Distinguish labeled **Fact** from **Inference**, and review confidence and priority where shown. ## Incomplete data Warnings can include missing period/comparison activity, unbalanced trial balance or balance sheet, mixed currencies requiring conversion, missing product cost and unavailable revenue trends. Some conditions withhold an AI narrative while keeping calculated metrics visible. Missing data is not zero performance or a clean bill of health. ## Verify and troubleshoot If generation fails, retain the selected dates and inspect the exact error. Do not repeatedly call AI while the source-data issue remains. Correct source records through their proper workflow, regenerate reports and then request a new analysis if needed. Use [Reports](https://directsale.ai/help/accounting/reports), [Aging](https://directsale.ai/help/accounting/aging-report) and [Discrepancy Checks](https://directsale.ai/help/accounting/discrepancies) to investigate source evidence. The output does not automatically change budgets, prices, invoices or accounts. --- Source: https://directsale.ai/help/storefront/index # Storefront The **Storefront** is your fully-featured online store, powered by DirectSale. It gives you a professional e-commerce website where customers can browse your products, search your catalog, read blog posts, and place orders -- all without needing a separate website or developer. ## What the Storefront Includes | Feature | Description | |---------|-------------| | **Customizable Homepage** | Build your homepage with drag-and-drop sections: hero banners, featured products, testimonials, countdown timers, and more | | **Template System** | Choose from 11 professionally designed templates (Modern, Classic, Bold, Fashion, Food, Tools, Machinery, Art, Digital, Sports, Marketplace) | | **Header & Footer Builder** | Fully customizable header navigation and footer layout with live preview | | **Custom Pages** | Create unlimited static pages (About, Contact, Terms, etc.) with a rich text editor or visual editor | | **Blog** | Publish blog posts with AI-generated content, categories, tags, and SEO metadata | | **SEO Management** | AI-powered SEO tools for products, pages, and store-level metadata with keyword tracking | | **Custom Domain** | Publish on your own verified domain with active SSL; use private temporary previews before launch | | **Analytics** | Track page views, product views, add-to-cart events, purchases, revenue, and conversion rates | | **Google Search Console** | Direct integration with Google Search Console for performance monitoring and indexing | | **Visual Editor** | Full GrapesJS visual editor for pixel-perfect page design | ## Navigating the Storefront Section Detailed setup guides also cover [third-party integrations](https://directsale.ai/help/storefront/integrations), [Search Console](https://directsale.ai/help/storefront/search-console), [SEO + AI for pages and blog](https://directsale.ai/help/storefront/content-seo-ai), [product-specific page display](https://directsale.ai/help/products/storefront-display) and [self-hosted deployment](https://directsale.ai/help/storefront/self-hosted). The Storefront section is organized into four main tab groups in the top navigation bar: ### Overview The main landing page where you can enable or disable your storefront, view quick stats, and configure basic SEO settings. ### Design & Setup All the tools for building and designing your store: - **Setup Wizard** -- The guided setup process for new stores - **Homepage** -- Build and arrange homepage sections - **Header & Nav** -- Configure the site header, navigation links, and top bar - **Footer** -- Customize the footer layout, branding, and colors - **Design** -- Set your template, color scheme, fonts, and layout options ### Content Manage your store's content: - **Product Content** -- Manage storefront-specific product data - **Pages** -- Create and edit custom pages - **Page Builder** -- Advanced page building tools - **Blog** -- Write and manage blog posts ### SEO & Settings Technical configuration for your store: - **SEO** -- Manage SEO metadata, keywords, and AI-generated SEO content - **Domain** -- Verify your custom domain and explicitly publish or unpublish the storefront - **Analytics** -- View storefront traffic and sales analytics - **Integrations** -- Third-party integrations - **Search Console** -- Google Search Console integration ## Enabling Your Storefront Your storefront has a simple on/off toggle. When disabled, visitors will not be able to access your store. ### Navigate to the Storefront Overview Go to **Storefront** in the sidebar, which opens the Overview page. ### Toggle the storefront switch In the **Storefront Status** card, flip the toggle switch to enable or disable your store. - **Enabled**: Your store is live and accessible to customers at your store URL - **Disabled**: Your store is offline and visitors cannot access it ### View your store URL When the storefront is enabled, your store URL is displayed below the toggle. Click it to open your store in a new tab. ## Quick Stats Cards The Overview page displays three summary cards: | Card | Description | |------|-------------| | **Domain** | Shows custom-domain verification and publication state; permanent public tenant subdomains are not provided | | **Status** | Displays whether the storefront is currently Active or Inactive | | **Image Sync** | Shows the status of product image synchronization with the storefront | ## SEO Settings (Overview Page) The Overview page also includes a quick SEO settings card where you can configure: - **Meta Title** -- The title that appears in search engine results (max 70 characters) - **Meta Description** -- The description shown in search results (max 160 characters) - **OG Image** -- The image displayed when your store is shared on social media (supports JPEG, PNG, GIF, WebP; max 5 MB) > **Info:** For more detailed SEO management including keyword tracking and AI-generated SEO for individual products, visit the dedicated [SEO Settings](https://directsale.ai/help/storefront/seo) page. ## Re-running the Setup Wizard If you need to change your store's basic information, template, or re-run the AI website builder, click the **Re-run Setup** button in the top-right corner of the Overview page. This takes you back to the [Setup Wizard](https://directsale.ai/help/storefront/setup) where you can update your configuration. ## Role-Based Access Access to the Storefront section is controlled by team member roles: | Role | Access Level | |------|-------------| | **Owner** | Full access to all storefront features | | **Admin** | Full access to all storefront features | | **Manager** | Full access to all storefront features | | **Accountant** | No access to storefront features | | **Operator** | No access to storefront features | | **Viewer** | No access to storefront features | --- Source: https://directsale.ai/help/storefront/setup # Initial Setup The **Setup Wizard** collects business information, a products/services/both choice, template choices and available catalog images, then helps generate initial content. Complete setup and review a private preview before separately publishing on your verified custom domain. Setup does not allocate a permanent public subdomain. > **Info:** If you have already completed the setup wizard, you can re-run it at any time by clicking the **Re-run Setup** button on the Storefront Overview page, or by navigating to **Storefront > Design & Setup > Setup Wizard**. ## The Four Steps The wizard displays a visual progress indicator at the top showing which step you are on. Each completed step is marked with a green checkmark. | Step | Name | Purpose | |------|------|---------| | 1 | Store Information | Enter your business details and select featured products | | 2 | Choose Template | Select a design template and layout direction | | 3 | AI Website Builder | AI automatically generates your website content, images, and homepage sections | | 4 | Complete setup & Preview | Finish the setup and review privately; custom-domain publication is separate | --- ## Step 1: Store Information This step collects the basic details about your business that the AI will use to generate your website content. ### Fill in your store details Complete the following fields in the **Store Information** card: | Field | Required | Description | |-------|----------|-------------| | **Website Language** | Yes | The language for your storefront. Choose from 18 supported languages including English, Spanish, French, German, Chinese, Japanese, Arabic, Persian, and more. This determines what language the AI generates content in. | | **Currency** | Yes | The currency for displaying product prices. Supports 16 currencies including USD, EUR, GBP, TRY, INR, CNY, JPY, and more. | | **Country** | Yes | Your business's country. This is the only strictly required field to proceed. | | **City** | No | Your business's city location. | | **Phone** | No | A contact phone number displayed on the storefront. | | **Contact Email** | No | A contact email address for customer inquiries. | | **Address** | No | Your physical business address. | | **About Your Business** | No | A brief description of your business. The AI uses this to create your "About" page content and other website copy. | > **Info:** The more information you provide, the better the AI can generate relevant website content. The "About Your Business" field is especially helpful for creating accurate homepage text, about pages, and meta descriptions. ### Choose products, services, or both Choose what the website will offer. On a fresh setup, active services without products suggest **Services**; an active product and service catalog suggests **Products and services**. A saved choice is retained. If it differs from the catalog, **Use suggested website type** lets you apply the recommendation. - **Products:** product shopping and checkout. - **Services:** appointment booking or job requests. The homepage uses existing service photos and editable sections for the introduction, service categories, service cards, process, assigned providers when available, stored service FAQs and contact details. - **Products and services:** product sections plus a service collection near the hero, with separate links for shopping and services. Service-only setup skips product image analysis and product banner generation. Service cards use actual prices and timing. Appointment services lead to booking; request-based services lead to a job request and show quote-based pricing. Website mode does not change chatbot configuration. ### Select featured products In the **Featured Products** card, choose up to **5 products** that will be highlighted on your homepage hero banner and featured sections. - Use the search bar to find products by name - Click a product to select it (a blue checkmark appears) - Click again to deselect - Selected products appear as badges below the grid - Click the X on a badge to remove it ### Choose banner images (optional) After selecting featured products, the **Banner Images** section appears. For each selected product, you can choose which product image to use in the hero banner: - Each product shows all its available images (primary + gallery) - Click an image to select it as the banner image for that product - Click again to deselect - These images are used by the AI to create visually appealing hero banners ### Click "Next: Choose Template" Once you have filled in at least the Country field, click the button to save your store info and proceed to Step 2. --- ## Step 2: Choose Template This step lets you pick a visual design for your store and set the text direction. ### Browse the template gallery The template gallery shows all 11 available templates. Each template card displays: - A preview thumbnail - The template name - A brief description Click a template card to select it (highlighted with a blue border). Click the preview icon on any template to open a larger preview in a modal. ### Available templates | Template | Description | |----------|-------------| | **Modern** | Clean, card-based, minimal design | | **Classic** | Traditional retail, warm colors | | **Bold** | Dark backgrounds, neon accents | | **Fashion** | Full-bleed images, lookbook style | | **Food** | Warm palette, rounded cards | | **Tools** | Industrial, spec-heavy cards | | **Machinery** | Professional, data-table heavy | | **Art** | Masonry grid, soft pastels | | **Digital** | Gradient backgrounds, SaaS look | | **Sports** | Dynamic angles, energetic colors | | **Marketplace** | Dense, info-rich marketplace style | ### Set layout direction Below the template gallery, choose the layout direction: - **LTR** (Left-to-Right) -- For languages like English, Spanish, French, German - **RTL** (Right-to-Left) -- For languages like Arabic, Persian, Hebrew The layout direction is automatically set based on the language you selected in Step 1, but you can override it here. ### Click "Build with AI" This saves your template selection and begins the AI building process in Step 3. --- ## Step 3: AI Website Builder This is where the magic happens. The AI automatically generates your entire website based on the information and template you provided. ### Watch the AI build your site The AI builder displays an animated progress view with a chef character and a step-by-step checklist. The process goes through approximately 12 stages: 1. Gathering the ingredients 2. Choosing the recipe 3. Preheating the oven 4. Organizing the pantry 5. Plating the main course 6. Setting the dinner table 7. Writing the menu card 8. Placing the welcome sign 9. Preparing the specials board 10. Polishing the silverware 11. Folding the napkins 12. Lighting the candles Each step shows its status: - **Pending** (gray circle) -- Not yet started - **Running** (spinning loader) -- Currently in progress - **Done** (green checkmark) -- Completed successfully - **Error** (red circle) -- Failed A progress bar at the top shows overall completion percentage. ### Review the results As steps complete, some show preview results: - Generated images appear as small thumbnails - Generated text content appears as a short preview ### Wait for completion or skip - When all steps finish, a "Website Ready!" message appears with a button to proceed - If an error occurs, you can click **Retry AI Build** to try again - If you prefer to set things up manually, click **Skip & Finish Later** to proceed without AI-generated content > **Warning:** The AI build process can take several minutes depending on the complexity of your store and the number of products. Do not close the browser tab while it is running. --- ## Step 4: Complete setup and preview The final step completes setup. It does not make the site public without the custom-domain publication requirements. ### Review setup results Check the generated text and selected product/banner images. Correct inaccurate claims and placeholders before publication. Permanent public subdomain selection is no longer available, for either Trial or paid accounts. ### Preview your website Click **Preview Website** to open a private, read-only storefront in a new tab. Its authorized session lasts 30 minutes. Reopen Preview from the dashboard when it expires; copying its address to another browser does not authorize access. ### Complete setup, then publish separately Complete the wizard and return to the Storefront overview. To go public, connect your own root domain, verify DNS, wait for active SSL, and choose Publish on custom domain. See [Custom Domain and Publishing](https://directsale.ai/help/storefront/domain). Finishing setup alone is not a public launch. > **Info:** After activation, you can always make changes to any part of your storefront through the Dashboard. The setup wizard sets up the initial content, but everything is fully editable afterward. ## What the AI Generates During the AI build step, the system automatically creates: | Generated Content | Description | |-------------------|-------------| | **Homepage sections** | Hero banner, featured products, categories, testimonials, trust badges, and more -- all populated with real content | | **Banner images** | AI-generated or AI-enhanced banner images using your selected product photos | | **About text** | Store description text for the homepage and about section | | **SEO metadata** | Meta titles, descriptions, and Open Graph data for your storefront | | **Navigation** | Header navigation links based on your product categories | | **Footer content** | Footer text, links, and layout configuration | --- Source: https://directsale.ai/help/storefront/design # Design & Themes The **Design** page lets you customize the visual appearance of your storefront. You can change your template, adjust colors, select fonts, set layout options, and control the text direction -- all from a single page with a convenient **Save Changes** button at the top. Navigate to **Storefront > Design & Setup > Design** to access these settings. ## Template Selection At the top of the Design page, you can switch your storefront template at any time. The template determines the overall visual style of your entire store, including product cards, page layouts, and component styles. ### Available Templates | Template | Style Description | |----------|-------------------| | **Modern** | Clean, card-based, minimal design with smooth transitions | | **Classic** | Traditional retail look with warm colors and serif accents | | **Bold** | Dark backgrounds with neon glow effects | | **Fashion** | Full-bleed images, lookbook-style layout with all-caps elegance | | **Food** | Warm orange palette with rounded elements | | **Tools** | Industrial grid layout with yellow accents | | **Machinery** | Navy professional corporate look | | **Art** | Masonry grid with soft pastels and gallery aesthetic | | **Digital** | Gradient backgrounds with SaaS-style design | | **Sports** | Bold red color scheme with energetic typography | | **Marketplace** | Dense, info-rich marketplace layout with trust badges | ### Browse the template grid All templates are displayed as cards in a responsive grid. The currently selected template is highlighted with a blue border and checkmark. ### Click a template to select it Click any template card to switch to it. You can also click the preview icon to see a larger preview in a modal dialog before committing. ### Save your changes Click **Save Changes** at the top of the page to apply the new template. > **Info:** Changing your template does not delete any content. All your homepage sections, pages, and products remain intact. Only the visual styling changes. ## Default product content template Select a saved product template in **Default product content template** and wait for its immediate save confirmation. This applies to inheriting products; product links, enabled custom designs and primary-category templates take priority. This selector is separate from the store's theme and its Save Changes action. Use [Section Templates](https://directsale.ai/help/storefront/section-templates) to create a template, restore inheritance or update a shared layout. ## Layout Direction Below the template gallery, you can set the layout direction for your storefront: - **LTR** (Left-to-Right) -- Default for languages like English, Spanish, French, German - **RTL** (Right-to-Left) -- For languages like Arabic, Persian, Hebrew, Urdu The direction affects the entire site layout including text alignment, navigation order, and component positioning. ## Color Scheme The **Colors** card lets you customize six color values that control the entire storefront palette: | Color | Purpose | |-------|---------| | **Primary Color** | Main brand color used for buttons, links, and accent elements | | **Secondary Color** | Supporting color for secondary buttons and highlights | | **Accent Color** | Used for special highlights, badges, and call-to-action elements | | **Background Color** | The main background color of your storefront pages | | **Text Color** | The default color for body text and headings | | **Surface Color** | The background color for cards, panels, and elevated surfaces | Each color has two input methods: - A **color picker** (click the colored square to open the browser's color picker) - A **text input** where you can type a hex color code directly (e.g., `#3B82F6`) ### Default Color Values | Color | Default Hex | |-------|-------------| | Primary | `#3B82F6` (Blue) | | Secondary | `#1E40AF` (Dark Blue) | | Accent | `#F59E0B` (Amber) | | Background | `#FFFFFF` (White) | | Text | `#111827` (Near Black) | | Surface | `#F9FAFB` (Light Gray) | ## Typography The **Typography** card lets you choose separate fonts for headings and body text: ### Heading Font The font used for all headings (H1, H2, H3, etc.) throughout your storefront. ### Body Font The font used for paragraph text, product descriptions, navigation items, and all other body content. ### Available Fonts | Font | Style | |------|-------| | Inter | Clean, modern sans-serif (default) | | Roboto | Google's versatile sans-serif | | Open Sans | Highly readable sans-serif | | Lato | Warm, friendly sans-serif | | Montserrat | Geometric sans-serif | | Poppins | Rounded geometric sans-serif | | Nunito | Rounded, soft sans-serif | | Raleway | Elegant thin sans-serif | | Playfair Display | Elegant serif with high contrast | | Merriweather | Traditional serif for readability | ## Layout Settings The **Layout** card controls structural aspects of your storefront: ### Product Grid Columns Choose how many columns to display in the product grid: | Option | Best For | |--------|----------| | **2 Columns** | Large product images, fewer products per row | | **3 Columns** | Balanced layout (default) | | **4 Columns** | Dense layout showing more products at once | ### Border Radius Controls the roundness of corners on cards, buttons, and other elements: | Option | Effect | |--------|--------| | **None** | Sharp corners (0) | | **Small** | Slightly rounded (0.25rem) | | **Medium** | Moderately rounded (0.5rem, default) | | **Large** | Noticeably rounded (0.75rem) | | **Extra Large** | Very rounded (1rem) | ## Saving Changes > **Warning:** Changes are not applied until you click **Save Changes** at the top of the page. If you navigate away without saving, your changes will be lost. ### Make your desired changes Adjust any combination of template, colors, fonts, or layout settings. ### Click Save Changes The button is located in the top-right corner. A loading spinner appears while saving. ### Verify on your storefront After saving, visit your storefront to see the changes live. You may need to refresh the page or clear your browser cache. --- Source: https://directsale.ai/help/storefront/homepage # Homepage Builder The **Homepage Builder** is where you design and arrange the sections that make up your storefront's homepage. You can add, remove, reorder, and configure a wide variety of content blocks to create a compelling landing experience for your visitors. Navigate to **Storefront > Content > Pages** and edit **Original homepage** to access the builder. The former Homepage dashboard URL redirects to this editor in Pages. Use the **Homepage** selector in the page list to choose the original homepage or any published custom page as the storefront's main page. ## Editor Modes The Homepage Builder offers two editing modes, accessible via tabs at the top of the page: | Mode | Description | |------|-------------| | **Section Editor** | The primary editor. Add and configure pre-built section types using forms and settings panels. Sections are rendered as structured data and automatically styled by your template. | | **Visual Editor** | A full GrapesJS visual editor for pixel-perfect drag-and-drop design. See the [Visual Editor](https://directsale.ai/help/storefront/visual-editor) page for details. | ## Section Editor The Section Editor is the default mode and the easiest way to build your homepage. ### Toolbar The toolbar at the top provides: - **Undo / Redo** buttons to step through your editing history - **Preview** toggle to show a side-by-side live preview panel - **Preview** button (external link) to save a draft and open a full preview in a new tab - **Draft** button to save your work without publishing - **Publish** button to save and push changes live to your storefront ### Working with Sections ### Add a section Scroll to the bottom of the section list to find the **Add Section** panel. Click on any section type to add it to your homepage. You can also use the **Presets** tab to add pre-configured groups of sections. ### Configure the section Click on any section in the list to expand its editor. Each section type has its own set of fields (see section types below). ### Reorder sections Drag and drop sections using the grip handle on the left side of each section item. The drag overlay shows which section you are moving. ### Enable or disable sections Toggle the visibility switch on any section to hide it from the storefront without deleting it. Disabled sections appear dimmed in the editor. ### Duplicate a section Click the duplicate icon to create a copy of any section immediately below the original. ### Delete a section Click the trash icon to remove a section. This action cannot be undone (but you can use the Undo button before saving). ## Available Section Types The Homepage Builder supports 19 different section types: | Section Type | Description | |-------------|-------------| | **Hero Banner** | Main banner with title, subtitle, CTA button, and background image. Supports variants: Default, Fullscreen, Slider (multiple slides), and Video background. | | **Selected Services** | Active service cards with their photos, descriptions, timing, prices and booking/request links. Choose all active services, featured services, a service category, or a manually ordered list. | | **Featured Products** | Displays a grid of your featured or selected products with an optional "View All" link. | | **Categories** | Shows a grid of your product categories as clickable cards. | | **Text Block** | A rich text content section for custom HTML content. | | **Banner** | A promotional banner with customizable background color, gradient overlay, title, subtitle, and CTA button. | | **Testimonials** | Customer review cards with name, review text, star rating, and optional avatar image. | | **Trust Badges** | A row of trust/feature icons (Free Shipping, Secure Payment, 24/7 Support, Easy Returns, Quality, Worldwide, Warranty, Eco-Friendly). | | **Statistics** | Animated number counters with customizable values, labels, prefixes, and suffixes. | | **Brand Logos** | A row of partner or brand logos with optional links. | | **Newsletter** | An email subscription form with customizable heading, subtext, and background color. | | **Image Gallery** | A photo gallery grid where you can upload multiple images with alt text and optional links. | | **Video** | Embed a YouTube, Vimeo, or custom video with a title. | | **Countdown** | A countdown timer to a specific date, perfect for sales and events. | | **FAQ** | An accordion-style frequently asked questions section with question/answer pairs. | | **Tabs** | Tabbed content panels where each tab has a label and rich text content. | | **Before / After** | An image comparison slider showing two images side by side. | | **Map / Location** | A store location section with an address field and Google Maps embed URL. | | **Social Proof** | Recent purchase notification popups showing customer name, product name, and time. | | **Spacer** | Empty vertical space in small, medium, or large sizes. | ## Service and mixed homepages Add **Selected Services** from **Add Section**. In **Content**, choose the service source and, for a manual source, select and reorder the services. Set the card count and columns, then use **Appearance & layout** for width, background, spacing and responsive settings. Only active services appear. An empty manual selection displays no service cards. Enable **Show the product shopping path beside services** for a mixed site. Cards open the selected service page; appointment and job-request actions remain separate from product checkout. Service-aware heroes use the supplied copy and images without template demo sales counts, ratings or shipping promises. Existing custom navigation and saved website-type choices remain editable. ## Section Settings Every section supports these universal settings: ### Visual Variant Many section types offer a **variant** selector that changes the visual layout style of that section. The available variants depend on your selected template. ### Scheduling Set a **Start Date** and **End Date** to make a section visible only during a specific time period. Useful for promotional banners, seasonal sales, and event countdown timers. ### Spacing Adjust the **Padding Top** and **Padding Bottom** values (in pixels) to control the vertical spacing around each section. ### Scroll storytelling Select a section, open **Appearance & layout**, and use **Scroll animation and pinning** to choose a fade, slide, zoom or parallax effect. The effect follows the visitor's scrolling in both directions. Set **Movement distance** to control its strength. To keep an image or feature visible beside a longer explanation, place both in a row and enable **Keep this section in view** on the shorter section. Open the storefront preview to see the motion; the editor canvas shows a static design preview. Motion is off on mobile by default, and visitors who request reduced motion see the content without animation. The same controls are available in product, service, custom-page and blog Section Editors. ## Section Presets The **Presets** tab in the Add Section panel provides pre-configured groups of sections that you can add with one click: | Preset | Included Sections | |--------|-------------------| | **Black Friday Sale** | Hero banner (fullscreen) + Countdown timer + Promotional banner | | **Trust & Credibility** | Trust badges + Statistics + Customer testimonials | | **Product Launch** | Hero banner + Featured products + Call-to-action banner | | **Store Information** | Text block (About) + Map/location + FAQ | | **Brand Showcase** | Brand logos + Image gallery + Newsletter | | **Complete Homepage** | Hero + Trust badges + Featured products + Categories + Testimonials + Newsletter | ## Hero Banner Variants The Hero Banner section supports four different layout variants: | Variant | Description | |---------|-------------| | **Default** | Standard hero with title, subtitle, CTA button, and a background image | | **Fullscreen** | Full-viewport hero that takes up the entire screen height | | **Slider** | A carousel with multiple slides, each having its own title, subtitle, image, and CTA | | **Video** | A hero with a looping video background | ## Live Preview Panel Click the **Preview** toggle button in the toolbar to open a side-by-side live preview panel. The page splits into two columns: - **Left side**: Your section list and editor - **Right side**: A live preview iframe that updates as you make changes This preview is powered by an embedded iframe of your actual storefront, giving you an accurate representation of how your homepage will look. > **Info:** The preview panel uses a draft save, so your live storefront is not affected until you click **Publish**. ## Publishing vs. Drafts | Action | Effect | |--------|--------| | **Draft** | Saves your changes to the server but does not update the live storefront. You can preview drafts using the preview function. | | **Publish** | Saves your changes and immediately updates the live storefront for all visitors. | > **Warning:** Always use the **Preview** feature to check your changes before clicking **Publish**. Published changes are immediately visible to all storefront visitors. --- Source: https://directsale.ai/help/storefront/header-footer # Header & Footer The **Header** and **Footer** builders give you complete control over the top and bottom navigation areas of your storefront. Both builders use a two-column layout with settings on the left and a live preview on the right (visible on large screens). Manage public accounts and their display locations in [Social Media](https://directsale.ai/help/storefront/social-media). Both builders preview the saved accounts and provide a link to those central settings. ## Header Builder Navigate to **Storefront > Design & Setup > Header & Nav** to access the header builder. The header builder has a **Save** button and a **Reset to Defaults** button in the top toolbar. Changes are not applied to your live storefront until you save. ### Header Template At the top of the settings panel, you can choose a specific header template that overrides your site-wide template. This allows your header to have a different visual style from the rest of the site. | Template | Style | |----------|-------| | **Site Default** | Uses the same template as your site (recommended) | | **Modern** | Clean glassmorphic with smooth transitions | | **Classic** | Warm serif with ornamental accents | | **Bold** | Dark with neon glow effects | | **Fashion** | Ultra-minimal, all-caps elegance | | **Food** | Warm rounded with orange palette | | **Tools** | Industrial grid with yellow accents | | **Machinery** | Navy professional corporate | | **Art** | Soft pastels, gallery aesthetic | | **Digital** | Gradient SaaS-style header | | **Sports** | Bold red, energetic typography | | **Marketplace** | Dense info-rich navigation | ### Layout Settings Configure the structural layout of your header: | Setting | Options | Description | |---------|---------|-------------| | **Logo Position** | Left, Center | Where the logo appears in the header | | **Navigation Position** | Beside Logo, Center, Below Logo | Where the navigation menu is placed relative to the logo | | **Sticky Header** | On/Off | Whether the header stays fixed at the top when scrolling | | **Transparent Header** | On/Off | Whether the header has a transparent background (useful for hero images) | | **Full Width** | On/Off | Whether the header spans the full browser width | | **Logo Max Height** | Number (px) | Maximum height of the logo image in pixels (default: 40) | ### Top Bar The top bar is a thin strip above the main header, often used for announcements and contact info: | Setting | Description | |---------|-------------| | **Enabled** | Toggle the top bar on or off | | **Subtitle** | Text displayed in the top bar | | **Background Color** | Custom background color (leave empty for template default) | | **Text Color** | Custom text color (leave empty for template default) | | **Manage social accounts and display settings** | Open the central Social media page to choose accounts and enable the header location | | **Show Contact Info** | Display phone and email in the top bar | | **Announcements** | A list of rotating announcement messages | ### Navigation Items The Navigation Items section lets you manage the links in your header menu: ### Add a navigation item Click the **Add Item** button to create a new menu link. Each item has these properties: | Property | Description | |----------|-------------| | **Type** | Home, Products, All Categories, Category, Page, or Custom Link | | **Label** | The text displayed in the navigation menu | | **URL** | The link destination (auto-filled for Home, Products, Categories; manual for Custom Link) | | **Enabled** | Toggle to show or hide the item | | **Open in New Tab** | Whether the link opens in a new browser tab | ### Reorder items Drag navigation items using the grip handle to change their order in the menu. ### Remove items Click the delete button on any item to remove it from the navigation. ### Category Display Settings When you have a "Categories" or "All Categories" navigation item, these settings control how categories appear: | Setting | Options | Description | |---------|---------|-------------| | **Display Mode** | Dropdown, Mega Menu, Inline | How categories are shown when hovering/clicking | | **Show Subcategories** | On/Off | Whether to show child categories in the dropdown or mega menu | ### Header Actions Control which action buttons appear in the header: | Action | Default | Description | |--------|---------|-------------| | **Show Search** | On | Displays a search icon/bar in the header | | **Show Cart** | On | Displays the shopping cart icon with item count | ### CTA Button Add an optional call-to-action button to the header: | Setting | Description | |---------|-------------| | **Enabled** | Toggle the CTA button on or off | | **Text** | Button label (e.g., "Shop Now") | | **URL** | Where the button links to | | **Style** | Filled or Outlined button appearance | | **Open in New Tab** | Whether the link opens in a new tab | ### Live Preview On large screens, the right side of the page shows a live preview of your header configuration. This preview updates in real-time as you make changes, allowing you to see exactly how your header will look before saving. --- ## Footer Builder Navigate to **Storefront > Design & Setup > Footer** to access the footer builder. The footer builder uses the same two-column layout as the header builder, with settings on the left and a live preview on the right. ### Footer Template Like the header, the footer can have its own template that overrides the site-wide template: | Template | Style | |----------|-------| | **Site Default** | Uses the same template as your site | | **Modern** | Clean minimal with dark background | | **Classic** | Warm serif fonts with gold accents | | **Bold** | Dark with neon accents, tech feel | | **Fashion** | Ultra-minimal, all-caps, elegant | | **Food** | Warm orange palette, rounded elements | | **Tools** | Industrial gray and yellow grid | | **Machinery** | Navy professional corporate | | **Art** | Soft pastels, gallery aesthetic | | **Digital** | Gradient backgrounds, SaaS style | | **Sports** | Bold red/orange, energetic | | **Marketplace** | Dense info-rich with trust badges | ### Layout Settings | Setting | Options | Description | |---------|---------|-------------| | **Columns** | 3 or 4 | Number of content columns in the footer | | **Social media** | Central settings | Choose accounts and enable the footer location in the Social media page | | **Show Payment Icons** | On/Off | Display accepted payment method icons | | **Show Newsletter** | On/Off | Include an email subscription form | | **Show Contact Info** | On/Off | Display contact details (phone, email, address) | | **Show Quick Links** | On/Off | Show navigation quick links | | **Content Width** | Standard, Full | Width of the footer content area | ### Branding Settings | Setting | Description | |---------|-------------| | **Show Logo** | Display your store logo in the footer | | **Show Store Name** | Display the store name text | | **Show About Text** | Include a brief about paragraph | | **About Max Length** | Maximum character length for the about text (default: 200) | ### Copyright Settings | Setting | Description | |---------|-------------| | **Copyright Text** | Custom copyright notice. Leave empty to auto-generate (e.g., "2026 Your Store. All rights reserved.") | | **Show Powered By** | Display a "Powered by" attribution link | ### Color Settings | Setting | Description | |---------|-------------| | **Background Color** | Custom footer background color (leave empty for template default) | | **Text Color** | Custom footer text color | | **Accent Color** | Custom accent color for links and highlights | Each color field can be left empty to use the template's default colors, or set to a custom hex value. > **Info:** Both the Header and Footer builders include a **Reset to Defaults** button that restores all settings to their default values. Use this if you want to start over with a clean configuration. --- Source: https://directsale.ai/help/storefront/pages # Custom Pages The **Pages** manager lets you create and manage custom static pages for your storefront. These pages are ideal for content like About Us, Contact, Terms & Conditions, Privacy Policy, Shipping Information, and any other custom content your store needs. Navigate to **Storefront > Content > Pages** to access the page manager. ## Page List The main view shows all your custom pages in a list format. Each page entry displays: - **Page title** with its URL slug (e.g., `/about-us`) - **Draft** label if the page is not published - **Visual** label if the page was created with the visual editor (GrapesJS) - Action buttons for editing (rich text editor), visual editing, and deleting Click **Add Page** in the top-right corner to create a new page. ## Creating a Page ### Click "Add Page" This opens the full-screen page editor. ### Fill in the page settings At the top of the editor, fill in the basic settings: | Field | Description | |-------|-------------| | **Title** | The page title displayed in the browser tab and as the main heading | | **Slug** | The URL path for the page (auto-generated from the title). Only lowercase letters, numbers, and hyphens are allowed. The page will be accessible at `/pages/your-slug`. | | **Published** | Toggle whether the page is live on your storefront | | **Show in Navigation** | Toggle whether the page appears in the storefront navigation menu | ### Configure SEO settings The **SEO** card provides fields for search engine optimization: | Field | Limit | Description | |-------|-------|-------------| | **Focus Keyword** | 100 chars | The primary keyword you want this page to rank for | | **Meta Title** | 60 chars | The title displayed in search engine results. A character counter turns yellow at 50 and red at 60 characters. | | **Meta Description** | 155 chars | The description displayed in search results. A character counter turns yellow at 120 and red at 155 characters. | | **Canonical URL** | -- | The canonical URL for this page (useful if the content exists at another URL) | | **OG Image** | -- | The image URL displayed when the page is shared on social media | | **No Index** | -- | Toggle to tell search engines not to index this page | ### Use AI to generate SEO Click the **Generate SEO** button (wand icon) in the SEO card header to let AI automatically generate: - Meta title - Meta description - Focus keyword - Suggested slug The AI analyzes your page title and content to create optimized SEO metadata. ### SERP Preview When a meta title or page title is entered, a **Search Preview** card shows how your page will appear in Google search results, including the title, URL path, and meta description. ### Write your page content Use the **TipTap rich text editor** below the settings cards to write your page content. The editor supports: - Headings (H1-H6) - Bold, italic, underline, strikethrough text - Ordered and unordered lists - Blockquotes - Code blocks - Links (via the link insertion dialog) - Images (via the image upload dialog) - Horizontal rules - Text alignment ### Save the page Click **Create** (for new pages) or **Update** (for existing pages) in the top-right corner. ## AI Content Generation Click the **Generate with AI** button (sparkles icon) to open the AI content generation dialog. This lets the AI create an entire page including: - Full HTML content with proper formatting - Meta title and description - Focus keyword - Suggested URL slug - Embedded images with alt text Simply provide a topic or title, and the AI will generate professional content for your page. > **Info:** AI-generated content is a starting point. Always review and customize the generated content to match your brand voice and ensure accuracy. ## Visual Editor Every page can also be edited using the **Visual Editor** (GrapesJS), a full drag-and-drop page builder. You can switch to the visual editor in two ways: 1. **From the page editor**: Click the **Visual Editor** button in the toolbar 2. **From the page list**: Click the layout icon next to any page When switching to the visual editor for a new page, the page must have a title and slug first. The system will automatically create the page before opening the editor. See the [Visual Editor](https://directsale.ai/help/storefront/visual-editor) page for complete details on using the GrapesJS editor. ## Editing a Page ### Click the pencil icon on any page This opens the page in the rich text editor with all its existing content and settings pre-filled. ### Make your changes Edit the title, slug, SEO settings, or content as needed. ### Click "Update" Save your changes. The page updates immediately on your storefront (if published). ## Deleting a Page Click the trash icon on any page in the list. A confirmation dialog will appear. Once confirmed, the page is permanently deleted. > **Warning:** Deleting a page is permanent and cannot be undone. Make sure you no longer need the page before deleting it. ## Page Visibility Pages have two visibility controls: | Setting | Effect | |---------|--------| | **Published** | When on, the page is accessible at its URL. When off, the page returns a 404 error to visitors. | | **Show in Navigation** | When on, the page link appears in the storefront navigation menu. When off, the page is still accessible via its direct URL but not linked in the menu. | This means you can create pages that are accessible only via direct link (published but not in navigation), or draft pages that are completely hidden (unpublished). --- Source: https://directsale.ai/help/storefront/visual-editor # Visual Editor The **Visual Editor** is a powerful drag-and-drop page builder powered by [GrapesJS](https://grapesjs.com/). It provides a full WYSIWYG (What You See Is What You Get) editing experience where you can design pages visually without writing any code. The Visual Editor is available for both the **Homepage** and **Custom Pages**. For the structured Section Editor and **Save as template**, see [Section Templates](https://directsale.ai/help/storefront/section-templates). Product Page Builder uses the Section Editor by default and offers **Open legacy Visual Editor** under Page source and help. Saved section layouts and legacy visual designs have separate editing workflows. ## Accessing the Visual Editor There are three ways to open the Visual Editor: 1. **Homepage**: Go to **Storefront > Design & Setup > Homepage** and click the **Visual Editor** tab 2. **Custom Pages (from editor)**: When editing a page, click the **Visual Editor** button in the toolbar 3. **Custom Pages (from list)**: Click the layout template icon next to any page in the page list ## Editor Interface When the Visual Editor opens, it takes over the full screen with the following components: ### Top Toolbar The toolbar at the top of the editor includes: - **Back button** -- Returns to the section editor (homepage) or page list (custom pages) - **Page title** -- Shows which page you are editing - **Container width** selector -- Choose between Full, Contained, or Narrow content width - **Device preview** buttons -- Switch between desktop, tablet, and mobile views - **Undo / Redo** buttons - **Save** button with a "last saved" timestamp ### Canvas Area The main editing canvas is where you visually build your page. You can: - Click on any element to select it - Drag elements to reposition them - Resize elements by dragging their edges - Double-click text to edit it inline ### Side Panels The editor includes side panels for: - **Blocks** -- Pre-built content blocks you can drag onto the canvas - **Layers** -- A tree view of all elements on the page (like layers in a design tool) - **Styles** -- CSS properties for the selected element - **Settings** -- Component-specific settings - **Traits** -- HTML attributes like classes, IDs, and custom data ## Content Blocks The Visual Editor provides a library of pre-built content blocks that you can drag onto your canvas: ### Layout Blocks - **Section** -- A full-width container - **Container** -- A centered max-width container - **Columns** -- Multi-column layouts (2, 3, 4 columns) - **Flexbox** -- Flexible box layout containers ### Basic Blocks - **Text** -- Paragraph text - **Heading** -- H1-H6 headings - **Image** -- Image with upload support - **Button** -- Styled button with link - **Link** -- Hyperlink element - **Video** -- Video embed (YouTube, Vimeo) - **Divider** -- Horizontal rule separator - **Spacer** -- Vertical spacing element ### Advanced Blocks - **Card** -- Product-style card with image, title, and description - **Hero Section** -- Full-width hero banner with text overlay - **Feature Grid** -- Grid of feature items with icons - **Testimonial** -- Customer review card - **CTA Banner** -- Call-to-action section - **Newsletter** -- Email subscription form layout - **FAQ Accordion** -- Expandable Q&A section ## Styling Elements When you select an element on the canvas, the **Styles** panel shows all available CSS properties: ### Typography - Font family, size, weight - Line height, letter spacing - Text color and alignment - Text decoration and transform ### Layout - Width, height, min/max dimensions - Margin and padding - Display mode (block, flex, grid, inline) - Position (static, relative, absolute, fixed) ### Appearance - Background color, image, gradient - Border (width, style, color, radius) - Box shadow - Opacity ### Flexbox / Grid When a flex or grid container is selected: - Flex direction, wrap, align, justify - Gap settings - Individual item flex properties ## Container Width The editor offers three container width modes, selectable from the toolbar: | Width | Description | |-------|-------------| | **Full** | Content spans the full width of the viewport | | **Contained** | Content is constrained to a standard max-width (similar to most websites) | | **Narrow** | Content uses a narrower max-width for focused reading experiences | ## Responsive Design The Visual Editor supports responsive design through device preview buttons: ### Switch device preview Click the device buttons in the toolbar to switch between: - **Desktop** (full width) - **Tablet** (768px width) - **Mobile** (375px width) ### Adjust styles per breakpoint Styles set while in a specific device view only apply to that breakpoint and smaller. This lets you create responsive layouts where elements rearrange on smaller screens. ### Test your design Toggle between devices to verify your layout works at all screen sizes. ## RTL Support If your storefront uses RTL (Right-to-Left) layout direction, the Visual Editor automatically detects this from your theme settings and applies the appropriate text direction to the canvas. This ensures that your visual editing experience matches the actual storefront layout. ## Saving Your Work ### Click Save Click the **Save** button in the toolbar. The editor saves: - The GrapesJS project data (for continued editing) - The rendered HTML output - The CSS styles - The container width setting ### Check the timestamp After saving, a "Last saved" timestamp appears next to the save button, confirming your work was saved successfully. ### Return to the page list Click the **Back** button to leave the editor and return to the previous view. > **Info:** The Visual Editor uses a separate storage format (GrapesJS project data) from the rich text editor. Once a page has been edited in the Visual Editor, it is marked with a "Visual" badge in the page list. You can still switch back to the rich text editor, but the visual editor layout will take precedence when rendering the page on the storefront. ## Homepage Visual Editor When using the Visual Editor for the homepage, there are some differences from custom pages: - If you switch to the Visual Editor and no project data exists yet, the current homepage sections are automatically converted to HTML as a starting point - The homepage visual editor saves to the homepage-specific storage, separate from the section editor data - You can switch between the Section Editor and Visual Editor modes freely; the storefront uses whichever was last saved > **Warning:** When switching between Section Editor and Visual Editor modes for the homepage, be aware that each mode saves to its own data storage. The storefront will display the content from whichever editor was used most recently. Changes in one editor are not automatically reflected in the other. --- Source: https://directsale.ai/help/storefront/section-templates # Section Templates: Save, Reuse and Apply Product Layouts Use **Storefront > Content > Section templates** to maintain reusable layouts for pages, blog articles and products. A storefront theme controls the store's overall appearance; a section template controls the arrangement of a document's content. Changing one does not automatically replace the other. ## Save a layout as a template 1. Open a saved product's **Page Builder**, or the Section Editor for a page or blog article. 2. Arrange the sections and inspect Mobile, Tablet and Desktop previews. 3. Select **Save as template**, beside **Template library** in the Section Editor toolbar. You can also open Template library and use its naming form. 4. Enter a descriptive template name and select **Save as template** in the dialog. 5. Wait for the saved confirmation. Open Template library and find the entry under **Saved store templates**. Saving creates a reusable design in this store's library. It does not publish a page or assign the design to every product. Keep the required live product purchase block; a valid product layout contains exactly one purchase block. Validation errors link to the affected sections: correct them before trying to save or publish again. If the button is missing, check that you are in the Section Editor. The legacy Visual Editor has a separate format and controls. An empty section tree cannot be saved as a template. Access to editing also depends on your role. ## Load an independent copy 1. Open **Template library** in the intended editor. 2. Select a ready-made design or choose **Load copy** beside a saved design. 3. Confirm replacement of the current layout, if prompted. 4. Review the loaded sections and edit them for this document. 5. Save the draft or publish using that document's own controls. For a product, select **Publish layout**. Loading is undoable and does not publish automatically. It keeps the document's other content and SEO settings. A copied layout is independent: later edits to the original template do not change the copy. For products, choosing a template from the **Layout source** selector creates a shared link instead of a detached copy. Service Section Editors also offer their own Template library and ready-made designs. Use that editor for service layouts; the shared store/category defaults described below apply to product pages. Page, article and service designs must be saved or published using their respective document controls after loading. ## Apply one template across products 1. Save a product layout as a template. 2. Open **Storefront > Design > Default product content template**. 3. Select the saved template and wait for the confirmation. This selector saves its choice immediately. 4. Open several product pages to verify the result, including products from different categories. The store default applies to products that inherit their layout. Products with a linked template, an enabled custom design or a primary-category template retain that higher-priority choice. To return an individual product to inheritance, open its Page Builder, expand **Page source and help**, choose **Use category / store default** under Layout source, and select **Publish layout**. In the category editor, choose the inherited product-template option if the category should also use the store default. The layout selection order is: | Priority | Layout used | | --- | --- | | 1 | Product's linked template | | 2 | Product's enabled custom design | | 3 | Primary category's product template | | 4 | Store's default product content template | | 5 | Standard product page | Selecting a store default does not overwrite existing custom designs. There is no blanket replacement of every product override in this workflow. A shared template uses each product's own live name, description, images, price, variants and availability; do not type a fixed example price into a reusable text block. ## Link one product to a shared template Open its Page Builder, expand **Page source and help**, select **Linked template: your template name** in Layout source, then choose **Publish layout**. Future updates to that saved template affect this product. Editing the linked sections in the product editor creates a custom draft; publishing that edited draft makes it independent. Publishing **Use category / store default** retains the detached design as a draft while the inherited layout becomes active. Publish changes before selecting **Preview published page**; this preview shows the published layout rather than unsaved canvas edits. Buying and review submission are disabled in an editor preview: test these on the public site. ## Update or delete a saved template 1. Open **Section templates** and select the appropriate Pages, Blog articles or Products tab. 2. Use Template library to load the saved design you own, then edit its sections. 3. Reopen Template library and select **Update loaded template**. 4. Read the confirmation and wait for success. If another session changed the template, reload the current version before retrying. Updating a product template changes the layout of products linked directly or through category/store defaults. Independent copies stay unchanged. Deleting a product template makes linked products and categories fall back to their inherited layout. Page and article copies remain after their source template is deleted. Templates offered by the platform can be loaded but cannot be edited as store-owned entries. ## Place specifications below the description In the Section Editor, put **Product description** and **Product specifications** in separate top-level sections, in that order. Placing both inside the same Row / Columns section displays them beside each other on wide screens. Inspect the Sections navigator and responsive row settings, then publish. If the public page still differs, check Layout source and higher-priority category/product overrides. ## Verify publication on a VPS Saved shared-template changes and published product layouts trigger website publication automatically. Check **Multichannel > Linked Stores > Linked website on VPS** for pending delivery or errors. Wait for publication to finish, then reload a sample public product. An older VPS application may require **Deploy > Website updates** to support newly released template components; Sync now publishes data without replacing the application. See [Product Storefront Display](https://directsale.ai/help/products/storefront-display), [Homepage Builder](https://directsale.ai/help/storefront/homepage), [Custom Pages](https://directsale.ai/help/storefront/pages), [Blog](https://directsale.ai/help/storefront/blog) and [Self-Hosted Storefront](https://directsale.ai/help/storefront/self-hosted). --- Source: https://directsale.ai/help/storefront/domain # Custom Domain, Private Preview and Publishing The Domain page controls public access to your storefront. DirectSale does not assign permanent public tenant subdomains, for either Trial or paid accounts. Build and preview your site from your dashboard, then publish it on your own verified custom domain when it is ready. ## Preview before connecting a domain 1. Sign in to your own dashboard with permission to manage the storefront. 2. Open Storefront and choose Preview. The full storefront opens in a new browser tab. 3. Review layout, product pages, navigation and mobile appearance. 4. Return to the dashboard to edit. Open a fresh preview when the old session expires. The random preview address is temporary: its authorized session lasts 30 minutes. It is not a permanent store address or a public launch. Copying the resulting address into another browser does not grant access. Allow pop-ups for the dashboard if Preview does not open. Preview is read-only and does not enable live checkout actions or the live chat widget. Test real channels and checkout separately. Do not use private preview addresses in marketing, a sitemap or customer product links. ## Before you connect This page connects a domain you already own; it does not purchase or renew domains. Purchase one from a registrar first if needed. Your account must have the custom-domain feature, and an owner or admin must connect it. If Domain Settings says the connection service is unavailable, contact platform support. The platform must finish its setup first; you do not need to supply an API token. Continue building and using a private preview while waiting. The guide remains available before you register a domain. ## Connect your own domain Navigate to Storefront > SEO & Settings > Domain. You need control of its DNS settings, storefront permissions and plan access. 1. Enter your registrable root domain, such as `yourbrand.com` or `yourbrand.co.uk`. Do not include `https://`, a path, `www`, or a subdomain such as `shop.yourbrand.com`. 2. Choose Set Domain. Copy the DNS records and target shown by DirectSale. 3. Add both the root (`@`) record and the `www` CNAME shown in the panel at your DNS provider. For the root, use your provider's supported ALIAS/ANAME or CNAME-flattening method; do not guess an IP address. 4. Wait for DNS propagation, then choose Check Status. 5. Confirm domain verification, active hostname status and active SSL before publishing. Edit records at the provider managing your authoritative nameservers, which may be different from your registrar. Choose one supported root record type, not all of CNAME/ALIAS/ANAME. Support for arbitrary targets varies by provider; ask support if your provider cannot point the root to the supplied hostname. If no target is shown, contact platform support before changing DNS. Review conflicting root website records before replacing them, and keep email MX/TXT records intact. Changing the root website record can replace your existing website. Some domains need additional ownership or certificate validation; ask support for the exact records if automatic checks do not complete. Entering a domain alone does not publish the site. SSL provisioning follows successful domain validation and may take additional time. Use the current status rather than assuming a fixed completion time. The root domain is the primary address. After DNS and SSL are ready, `www` product and page addresses redirect permanently to the same path on the HTTPS root domain. Check Status also sets up or retries `www` SSL for an existing domain. DirectSale does not create DNS records at your provider. The `www` SSL indicator is separate from root verification and is not proof of DNS reachability; open a `www` product address after publishing to verify the complete redirect. Pending `www` setup does not prevent the verified root website from being published. ## Publish on your custom domain After reviewing content and checkout, choose Publish on custom domain. Public access requires the verified domain, active SSL and explicit publication. A paid subscription by itself does not publish a website. Check your custom-domain homepage and a product page in a private browser window after publishing. A draft page or product can still be unavailable even when the storefront is published. Publishing the storefront does not activate every draft. ## Unpublish or change a domain Unpublishing removes public storefront access; editing and dashboard previews remain available. Removing or replacing a domain requires verification and publication for the new domain. Stop advertising an old address after disconnecting it. Hosted payment links sent in messaging channels, payments in progress, an authorized widget on an external website and external commerce integrations have separate authorization. Private storefront status does not automatically disable those independent services. ## Troubleshooting | Symptom | What to check | | --- | --- | | Preview expired or denied | Sign in to the correct account and launch a new Preview. Do not share preview cookies or session links. | | No permanent subdomain field | Expected: public stores use a connected custom domain. | | Domain pending | Check the exact DNS target, conflicting records and propagation at your registrar. | | SSL pending | Check hostname verification first; refresh status after provisioning has had time to complete. | | www unavailable | Add the www CNAME shown in Domain Settings, choose Check Status, wait for www SSL, then open a www product address to confirm it redirects. | | Domain verified but website unavailable | Confirm SSL is active and Publish on custom domain succeeded. Check page/product publication too. | | Publish fails | Keep the site private, read the error and contact Support if verification is complete but publishing still fails. | | Connection service unavailable | Contact platform support to complete setup; keep using private preview. | | Settings failed to load | Choose Reload domain settings. Do not assume the saved domain was removed. | | Domain already in use | Contact support to review the existing association. | | DNS provider rejects a root CNAME | Ask about supported root flattening/ALIAS/ANAME or contact support. | | Status cached | Live status could not be fetched. Retry Check Status. | | Publish is disabled | Reload settings and complete domain and SSL verification first. | --- Source: https://directsale.ai/help/storefront/seo # SEO Settings The **SEO** page provides a comprehensive suite of tools for managing search engine optimization across your entire storefront. It includes an overview dashboard, keyword explorer, per-product SEO management with AI generation, and store-level SEO configuration. Navigate to **Storefront > SEO & Settings > SEO** to access the SEO tools. ## SEO Tabs The SEO page is organized into four tabs: | Tab | Purpose | |-----|---------| | **Overview** | Dashboard with coverage stats, quick actions, and best practices | | **Keywords** | Keyword explorer with usage tracking and duplicate detection | | **Product SEO** | Per-product SEO status with individual and bulk AI generation | | **Store SEO** | Store-level meta data, return-policy structured data, discovery URLs, and SERP preview | --- ## Overview Tab The Overview tab reports metadata coverage inside DirectSale. It does not report whether Google has indexed or ranked a URL. Use the Search Console page for Google's actual crawl and indexing data. ### Stats Cards Four cards display key metrics: | Metric | Description | |--------|-------------| | **Product Metadata Coverage** | Percentage of active products with a slug, title, description, keyword targets, and image alt text | | **Incomplete SEO** | Number of products missing SEO data, broken down into "Partial" (some fields filled) and "Missing" (no SEO data at all) | | **Keywords** | Total number of tracked keywords across all products, pages, and blog posts. Shows a warning if any keywords are overused (used by multiple entities). | | **Categories** | Number of active categories with a slug, SEO title, and SEO description | Additional cards show metadata coverage for published custom pages, published blog posts, and active services. ### Quick Actions Two maintenance actions are available: | Action | Description | |--------|-------------| | **Resync Keywords** | Atomically rebuilds the internal keyword index from active/indexable products, pages, and blog posts. Deleted, draft, inactive, and `noIndex` entities are excluded. | | **Fix HTML Entities** | Cleans up any HTML entity encoding issues (e.g., `&` instead of `&`) in product names and category names. Shows how many items were fixed. | ### SEO Best Practices A reference card displays four SEO tips: | Practice | Recommendation | |----------|----------------| | **Unique Keywords** | Each product should target a unique primary keyword to avoid internal competition | | **Product Descriptions** | Write unique, descriptive product descriptions of at least 100 words | | **Meta Titles** | Keep meta titles under 60 characters and include the primary keyword | | **Meta Descriptions** | Write compelling descriptions under 155 characters that encourage clicks | --- ## Keywords Tab The Keywords tab is a keyword explorer that lets you track and manage all the focus keywords used across your storefront. ### Keyword List The keyword list shows a table with: | Column | Description | |--------|-------------| | **Keyword** | The keyword text | | **Usage** | How many entities (products, pages, blog posts) use this keyword. Keywords used by 2 or more entities are flagged in red as potentially overused. | | **Entities** | Icons showing which entity types use the keyword (product, category, page) | ### Searching Keywords Use the search bar at the top to filter keywords by text. The total keyword count is displayed below the search bar. ### Keyword Details Click any keyword row to expand it and see detailed information: - **Overuse warning** if the keyword is used by multiple entities - **Entity list** showing each product, category, or page that uses the keyword, with their names, slugs, and entity types ### Pagination Keywords are paginated with 30 items per page. Use the Previous/Next buttons at the bottom to navigate between pages. > **Info:** Shared keywords are an internal targeting signal, not a Google penalty or ranking report. Review pages that have the same search intent; related pages can legitimately share terminology. --- ## Product SEO Tab The Product SEO tab lets you manage SEO metadata for individual products and generate it in bulk using AI. ### Bulk Actions Two main actions are available at the top: | Button | Description | |--------|-------------| | **Generate Missing** | Starts an AI batch process to generate SEO data for all products that are missing it (does not overwrite existing SEO data) | | **Regenerate All** | Regenerates product metadata after confirmation. Existing public slugs and customer-facing product descriptions are preserved. | When a bulk generation is running, a progress bar shows the completion percentage with counts of processed, skipped, and failed items. ### Filters and Search | Filter | Options | |--------|---------| | **All** | Shows all products | | **Missing** | Shows only products with incomplete or missing SEO data | | **Complete** | Shows only products with complete SEO data | Use the search bar to find specific products by name. ### Product SEO Table The table displays the following columns: | Column | Description | |--------|-------------| | **Product** | Product name and category | | **Slug** | The URL slug for the product page | | **SEO Title** | The meta title for search engines | | **Keywords** | The assigned focus keywords (shown as badges) | | **Status** | Complete (green), Partial (yellow), or Missing (red) | | **Action** | Sparkles button to generate SEO for individual products | ### Generating SEO for Individual Products ### Find the product Use filters and search to locate the product you want to optimize. ### Click the sparkles icon In the action column, click the AI sparkles button next to the product. ### Wait for generation The button shows a loading spinner while the AI generates: - SEO title - Meta description - Focus keywords - URL slug - Image alt text ### Review the results The table updates automatically with the new SEO data. You can verify the generated content by viewing the product details. ### Bulk SEO Generation ### Click "Generate Missing" or "Regenerate All" Choose whether to fill in only products without SEO data or regenerate everything. ### Monitor the progress bar A durable background job is queued, so it can resume processing after an API restart. A progress bar appears showing: - Total products to process - Processed count - Skipped count (products that already have SEO data, when using "Generate Missing") - Failed count - Completion percentage ### Wait for completion The process runs in the background. You can navigate away and come back -- the progress is preserved. When complete, a success message shows a summary. > **Warning:** Bulk SEO generation requires an available platform AI route and sufficient allowance. If requests fail repeatedly, ask support to check the configured Storefront Model and fallback routes; adding a messaging-channel token does not configure storefront generation. --- ## Store SEO Tab The Store SEO tab manages the top-level SEO for your entire storefront. ### SERP Preview A preview card shows how your store will appear in Google search results: - **Title**: Your store's meta title (falls back to the store name) - **URL**: Your store's URL - **Description**: Your store's meta description ### AI Generation Click **Generate Store SEO** to create a preview based on the catalog and store information. Review the title and description, then click **Save**; generation does not publish the preview automatically. ### Merchant return policy Configure the return window, country, return method, fees, refund type, and optional policy URL. The values are validated and emitted as `MerchantReturnPolicy` structured data only when the policy is enabled and sufficiently configured. ### Google discovery and actual index status The Store SEO tab links to the tenant's public sitemap and Merchant Center feed. Open **Storefront > Search Console** to connect Google, submit the sitemap, inspect a URL, and view performance. DirectSale intentionally does not send normal product or category URLs to Google's Indexing API because that API is restricted to job-posting and livestream pages. > **Info:** The Store SEO is separate from the quick SEO settings on the Storefront Overview page. Both edit the same underlying data (store meta title, meta description), so changes made in either location are reflected in both places. ## Verify the public product page After saving SEO fields or publishing a layout, open the actual product URL and check the page title, meta description, canonical URL, one main product heading, image alt text and valid Product/Offer structured data. The price, currency and availability must match the current product. Reviews in structured data must reflect approved published reviews. A custom template should use live product blocks for purchase information rather than hard-coded example values. Check a representative page for every theme/layout you use on mobile and desktop, including products with variants and without reviews. Lighthouse SEO scores do not prove Google indexing or rich-result eligibility. Use Search Console for indexing and Google's structured-data tools for reported errors. PageSpeed's laboratory metrics are separate from real-user Core Web Vitals; a report with no real-user data cannot establish a field pass. These shared technical features do not require regenerating product descriptions. A self-hosted website running older application code needs **Deploy > Website updates** for renderer fixes, then successful publication. See [Section Templates](https://directsale.ai/help/storefront/section-templates) and [Self-Hosted Storefront](https://directsale.ai/help/storefront/self-hosted). --- Source: https://directsale.ai/help/storefront/content-seo-ai # SEO + AI for Pages and Blog Posts The page and blog editors provide a separate SEO + AI workflow alongside their original AI controls. Use it to review a brief, keywords, available Search Console evidence and a localized URL before generating a preview. ## Before you start Open a custom page or blog editor with the appropriate permission. Enter the current title and content. Prepare accurate business facts, audience, purpose, products/services and desired sections. Do not put passwords or private customer data in the brief. This pilot reads the editor's current content and the additional brief. It differs from [Product SEO + AI](https://directsale.ai/help/products/seo-ai), which uses saved product information. ## Suggest keywords and URL 1. Open **SEO + AI** from the editor. 2. Check the source title and enter a specific content brief. The button requires a title of at least two characters and a brief of at least ten characters. 3. Choose the content and URL language. 4. Click **Suggest keywords & URL** and wait for the proposal. 5. Read the suggested primary keyword, supporting phrases, URL and explanation. 6. Review competing SEO targets and the Search Console evidence status before accepting. The pilot checks existing SEO records to identify competing primary targets. Prefer a distinct primary phrase reflecting this page's purpose. Shared supporting phrases are allowed; avoid changing a factual brand or product name simply to make every word unique. Changing the title, brief or language resets the proposal. Changing a proposed keyword or slug requires a new preview; an old preview is not the updated brief. ## Use Search Console evidence correctly Connect the intended site in [Search Console](https://directsale.ai/help/storefront/search-console). The proposal shows its available evidence status, period, queries, pages, clicks and impressions. Check any limited-data notice. Disconnected, unavailable or empty data does not mean zero search demand. These are your site's observed queries, not general market search volume. When no usable evidence exists, facts-based keyword suggestions remain suggestions, not measured popularity or promised rankings. ## Generate and inspect the preview 1. Edit the primary phrase, supporting phrases and proposed URL as needed. 2. Click **Approve brief & generate preview**. 3. Review the SEO title, meta description, proposed/existing URL and body. A blog preview can also include an excerpt. 4. Check facts against your brief, remove unsupported claims and inspect headings, links and tables. 5. If the brief is wrong, correct it and generate a new preview rather than publishing unsuitable text. The page title provides the main heading. Organize body sections with H2 and subsections with H3; use H4 only for a genuine deeper level. Do not repeat headings just to insert keywords. Preserve correct brand/model names in localized URLs. Existing slugs shown by the pilot are preserved; do not assume its proposal silently renames a live URL. ## Apply, save and publish are different Click the preview's **Apply** action to return the results to the page/blog editor draft. Unlike the product pilot's direct Save & apply, this action does not finish saving the page or post. Review the populated editor and use **Save**, **Save Draft** or **Publish**, as appropriate. Reopen the saved record and check its content, metadata and status. Closing the editor without saving can lose applied changes. A published page/post is still private if its storefront has not been published. Custom-domain verification, active SSL and explicit site publication are separate requirements. ## Credits and recovery Successful suggestions and newly generated previews consume the generation credits described in the dialog. Applying an existing preview does not generate it again. Check the displayed allowance before repeated suggestions. If Suggest is disabled, check the title/brief lengths and initial context load. For connection or provider errors, preserve your draft and read the error before retrying. For an expired preview, reopen and prepare a fresh one. If content appears unchanged after Apply, inspect the parent editor, then save and reopen it; a custom visual layout can be separate from ordinary body content. See [SEO Settings](https://directsale.ai/help/storefront/seo), [Custom Pages](https://directsale.ai/help/storefront/pages), [Blog](https://directsale.ai/help/storefront/blog) and [Visual Editor](https://directsale.ai/help/storefront/visual-editor). Generation is not a guarantee of indexing, ranking or inclusion in AI answers. --- Source: https://directsale.ai/help/storefront/blog # Blog The **Blog** feature lets you create and publish blog posts on your storefront. Blog content helps drive organic traffic, establish authority in your niche, and engage customers. The blog includes AI-powered content generation that can create entire blog posts, complete with images and SEO metadata. Navigate to **Storefront > Content > Blog** to access the blog manager. ## Blog Post List The main blog view shows all your posts in a filterable, searchable list. Each post entry displays: - **Featured image** thumbnail - **Title** and excerpt - **Category** (if assigned) - **Tags** as badges - **Status** (Published or Draft) - **Published date** or creation date - **View count** ### Filtering and Searching | Filter | Options | |--------|---------| | **Status** | All, Published, Draft | | **Category** | All categories or a specific category | | **Search** | Search by title text | ### Pagination Posts are paginated. Use the Previous/Next buttons at the bottom to navigate between pages. ## Creating a Blog Post ### Click "New Post" This navigates to the blog post editor page. ### Fill in the post details | Field | Description | |-------|-------------| | **Title** | The post title (displayed as the main heading and in search results) | | **Slug** | The URL path for the post (auto-generated from the title; only lowercase letters, numbers, and hyphens allowed) | | **Excerpt** | A short summary displayed in post listings and search results | | **Category** | Assign the post to a blog category (optional) | | **Tags** | Add tags to help organize and discover posts | | **Featured Image** | Upload or set a cover image for the post | | **Author** | The author name displayed on the post | | **Status** | Draft (not visible to visitors) or Published (live on the storefront) | ### Write the content Use the rich text editor to write your blog post. The editor supports all standard formatting options including headings, lists, images, links, blockquotes, and code blocks. ### Configure SEO Each blog post has its own SEO settings: | Field | Limit | Description | |-------|-------|-------------| | **Meta Title** | 60 chars | The title shown in search engine results | | **Meta Description** | 155 chars | The description shown in search results | | **Focus Keyword** | -- | The primary keyword this post should rank for | ### Save the post Click **Create** or **Update** to save your post. ## AI Blog Post Generation The AI content generator can create entire blog posts from a simple topic description. This is the fastest way to populate your blog with quality, SEO-optimized content. ### Open the AI generator Click the **Generate with AI** button (sparkles icon) in the blog post editor or the blog list page. ### Enter a topic Type a topic or title for your blog post in the **Topic** field. This is the only required field. ### Use topic suggestions (optional) Click the **Suggest Topics** button (lightbulb icon) to get AI-generated topic suggestions based on your product catalog. Each suggestion includes: - **Topic title** -- The suggested post topic - **Description** -- A brief explanation of the topic - **Search intent** -- The type of search the post would target (informational, commercial, etc.) - **Suggested keywords** -- Keywords to target for SEO Click any suggestion to auto-fill the topic and keywords fields. ### Add target keywords (optional) Enter comma-separated keywords in the **Keywords** field. These keywords will be naturally incorporated into the generated content for SEO optimization. ### Select featured products (optional) Search for and select up to **3 products** from your catalog to feature in the blog post. The AI will naturally reference these products within the content, creating organic product placements that can drive sales. - Use the search field to find products - Click a product to select it (appears as a badge) - Click X on a badge to remove it ### Add custom images (optional) You can provide images for the AI to incorporate into the blog post: - **Upload images** -- Upload image files from your computer - **Select from gallery** -- Browse and select from your product image gallery - **Enhance with AI** -- Check this option to let AI optimize and enhance your uploaded images with professional descriptions and alt text The number of available image slots depends on your **Image Count** setting. ### Configure generation settings | Setting | Options | Description | |---------|---------|-------------| | **Tone** | Professional, Friendly, Educational | The writing style of the generated content | | **Word Count** | ~300, ~500, ~800, ~1000, ~1500, ~2000 | Approximate length of the generated post | | **Image Count** | 0, 2, 3, 4 | Number of images to include in the post | ### Click "Generate" The AI generates the complete blog post including: | Output | Description | |--------|-------------| | **Title** | An optimized post title | | **Slug** | A URL-friendly slug | | **Content** | Full HTML content with headings, paragraphs, lists, and embedded images | | **Excerpt** | A concise summary for listings | | **Tags** | Relevant tags for categorization | | **Meta Title** | SEO-optimized title for search engines | | **Meta Description** | SEO-optimized description for search results | | **Featured Image** | A cover image for the post | | **Embedded Images** | Images placed within the content with alt text | ### Review and edit The generated content is loaded into the editor where you can review, modify, and refine it before publishing. > **Info:** AI content generation requires an AI provider to be configured in your account settings. The quality and language of the output depend on your configured AI model. ## Blog Categories Blog categories help organize your posts into logical groups, making it easier for readers to find related content. Navigate to the **Categories** tab within the Blog section to manage categories. ### Managing Categories ### Create a category Click **Add Category** and fill in: | Field | Description | |-------|-------------| | **Name** | The category name (e.g., "Product Guides", "Industry News") | | **Slug** | The URL-friendly identifier (auto-generated from the name) | | **Description** | An optional description of the category | ### Edit a category Click the edit button on any category to update its name, slug, or description. ### Delete a category Click the delete button to remove a category. Posts assigned to a deleted category will become uncategorized. ## Managing Posts ### Editing a Post Click the edit (pencil) icon on any post in the list to open it in the editor with all its existing content and settings pre-filled. ### Deleting a Post Click the delete (trash) icon on any post. A confirmation dialog will appear. Once confirmed, the post is permanently deleted. ### Viewing a Post Click the view (eye) icon to open the published post on your storefront in a new tab. ## Blog SEO Blog posts contribute to your overall storefront SEO: - Each post generates its own page with optimized meta tags - Posts are included in your storefront's sitemap - Blog post keywords are tracked in the SEO keyword explorer - Categories create additional browse pages that can rank in search results > **Info:** For the best SEO results, aim to publish blog posts regularly with unique focus keywords. Use the [SEO Settings](https://directsale.ai/help/storefront/seo) keyword explorer to check for keyword overlap between your blog posts and product pages. --- Source: https://directsale.ai/help/storefront/analytics # Storefront Analytics The **Analytics** page provides insights into your storefront's performance, including visitor traffic, product engagement, sales metrics, and search behavior. A separate **Search Console** integration connects directly to Google Search Console for search engine performance data. ## Storefront Analytics Navigate to **Storefront > SEO & Settings > Analytics** to view your storefront analytics dashboard. ### Time Period Use the dropdown in the top-right corner to select the reporting period: | Period | Shows Data For | |--------|----------------| | **Today** | Current day only | | **This Week** | The current 7-day period | | **This Month** | The current calendar month | ### Key Metrics The analytics dashboard displays six primary metrics in a grid: | Metric | Description | |--------|-------------| | **Page Views** | Total number of pages viewed across your storefront | | **Product Views** | Number of times individual product pages were viewed | | **Add to Cart** | Number of times products were added to the shopping cart | | **Checkouts** | Number of checkout sessions initiated | | **Purchases** | Number of completed purchases | | **Visitors** | Number of unique visitors to your storefront | ### Revenue and Conversion Below the metrics grid, two larger cards provide business insights: | Card | Description | |------|-------------| | **Revenue** | Total revenue from completed purchases in the selected period, displayed with the number of purchases | | **Conversion Rate** | Percentage of visitors who completed a purchase (visitors to purchases ratio) | ### Top Viewed Products A ranked list of your most-viewed products during the selected period. Each entry shows: - Ranking number - Product name - View count This helps you understand which products attract the most attention, useful for optimizing product placement on your homepage. ### Top Searches A ranked list of the most common search queries visitors use on your storefront. Each entry shows: - Ranking number - Search query (in quotes) - Search count > **Info:** Use the Top Searches data to identify what your customers are looking for. If popular searches return no results, consider adding those products or adjusting product names and descriptions to match the search terms. --- ## Google Search Console Integration Navigate to **Storefront > SEO & Settings > Search Console** for the Google Search Console integration. The Search Console integration brings Google Search Console data directly into your dashboard, allowing you to monitor your storefront's search engine performance without leaving the platform. ### Connecting to Google Search Console The integration uses OAuth to connect to your Google account. ### Go to the Connect tab The first tab shows the connection status and setup instructions. ### Connect your Google account Follow the on-screen instructions to authorize the platform to access your Google Search Console data. ### Select your site After connecting, choose the Google Search Console property that corresponds to your storefront from the list of available sites. ### Available Tabs Once connected, five tabs become available: | Tab | Description | |-----|-------------| | **Connect** | Manage your Google Search Console connection and select the site property | | **Performance** | Search performance data including clicks, impressions, CTR, and average position | | **URL Inspection** | Inspect individual URLs to check their indexing status | | **Indexing** | Submit URLs for indexing and view indexing status | | **Sitemaps** | View submitted sitemaps and their processing status | ### Performance Tab The Performance tab shows search analytics data from Google: | Metric | Description | |--------|-------------| | **Clicks** | Number of times users clicked through to your storefront from search results | | **Impressions** | Number of times your storefront appeared in search results | | **CTR (Click-Through Rate)** | Percentage of impressions that resulted in clicks | | **Average Position** | Average ranking position of your storefront in search results | Data can be filtered and broken down by queries, pages, countries, devices, and time ranges. ### URL Inspection Tab Enter any URL from your storefront to check its indexing status with Google. The inspection reveals: - Whether the page is indexed - Last crawl date - Any indexing issues or errors - Mobile usability status ### Indexing Tab Submit individual URLs to Google for indexing. This is useful when you: - Publish new pages or blog posts - Make significant changes to existing pages - Want to ensure Google picks up your latest content quickly ### Sitemaps Tab View and manage your storefront's sitemaps: - See which sitemaps have been submitted to Google - Check the processing status of each sitemap - View the number of URLs discovered in each sitemap ### Quota Management The Search Console integration shows a **Quota Indicator** that displays how many API requests remain in your daily quota. Google Search Console API has rate limits, and the indicator helps you stay within those limits. > **Warning:** The Google Search Console integration requires a Google account with Search Console access for your storefront's domain. Make sure your storefront domain is verified in Google Search Console before connecting. --- ## Using Analytics Effectively Here are some ways to use your analytics data to improve your store: | Goal | Strategy | |------|----------| | **Increase product views** | Feature your top-viewed products more prominently on the homepage | | **Reduce cart abandonment** | If you see many "Add to Cart" events but few "Checkouts," review your checkout flow and shipping costs | | **Improve conversion rate** | Analyze which products are viewed but rarely purchased -- they may need better descriptions, images, or pricing | | **Content optimization** | Use top search queries to guide your blog content strategy and product descriptions | | **SEO improvement** | Use Search Console data to identify pages with high impressions but low CTR, then optimize their meta titles and descriptions | --- Source: https://directsale.ai/help/storefront/integrations # Storefront Integrations and Tracking Open **Storefront > Integrations** to configure analytics, advertising pixels, site verification, chat tools and messaging buttons on the generated storefront. ## Before you start Have access to the corresponding provider property and the correct public installation identifier. A measurement ID is not an API secret. Review consent requirements and avoid duplicate trackers if a tag manager already installs the same tool. Private preview and a published custom domain can behave differently. ## Configure an integration 1. Find the relevant category and integration card. 2. Enable the integration and enter the requested ID, not an entire script unless the field specifically asks for code. 3. Complete required fields; optional labels are not interchangeable with IDs. 4. Save the integrations form. 5. Reload the form to confirm persistence, then verify a page on the intended domain using the provider's own test/debug view. ## Fields by category | Category | Typical requested values | | --- | --- | | Analytics & Tracking | GA measurement ID or Yandex counter ID | | Tag Management | Google Tag Manager container ID | | Advertising Pixels | Pixel/tag/partner ID; Google Ads also has conversion ID and optional label | | Heatmaps & Session Recording | Clarity project ID or Hotjar site ID | | Live Chat | Crisp website ID, Tawk property/widget IDs or Chatwoot public key | | Search Engine Verification | Provider verification code for Google, Bing, Yandex or Pinterest | | Messaging Buttons | WhatsApp phone/default message or Telegram username | | AI Chat Widget | The storefront's own supported chat-widget setting | The cards provide provider-specific setup hints. Use an identifier from the property for this website, not one copied from an unrelated account. A messaging button merely opens a conversation; it is not the same as connecting that messaging channel to DirectSale's AI. ## Privacy and custom HTML Review the privacy/consent controls shown on the page before enabling advertising pixels or session recording. Only add custom HTML you understand and are authorized to use. Sanitization or platform restrictions may remove unsupported markup. Do not add passwords, private API keys or customer information to site-wide code. ## Search Console is a separate connection A verification tag proves site control to the search provider. To retrieve query/performance data in DirectSale, also use **Storefront > Search Console** and connect the appropriate property. See [Search Console](https://directsale.ai/help/storefront/search-console). ## Verification and troubleshooting No data: confirm the integration is saved/enabled, ID belongs to the right property, and your browser's consent/ad-blocking state. Duplicate events: check whether the same tool is installed both directly and through a tag manager. A saved integration does not publish a private storefront or guarantee indexing. For private preview restrictions, see [Domain and Publication](https://directsale.ai/help/storefront/domain). --- Source: https://directsale.ai/help/storefront/social-media # Social media accounts and sharing Manage your website's public social links at **Storefront > SEO & Settings > Social media**. Owners, administrators and managers can use this page when website access is available. ## Add your accounts 1. Select **Add account** and choose a network. 2. Enter the profile URL or a supported username. For WhatsApp, enter the number with its country code or a public WhatsApp link. For Mastodon and Custom link, enter the full HTTPS address. 3. Optionally enter a display label. A custom link requires a label. 4. Keep **Visible** enabled for accounts you want visitors to see. Use the arrows to change their order, or remove an account. Choose the locations for each account: for example, include only two networks in the header and the full list in the footer. **Page blocks** controls whether an account appears in linked content blocks. 5. Mark **This is an official public profile of my business** only for pages that identify your business. Contact or invitation links are not business identity profiles. 6. Select **Save changes**. The preview shows valid enabled links; clicking the preview does not navigate away. You can save up to 20 accounts. Supported networks include Instagram, Facebook, X, YouTube, LinkedIn, TikTok, Pinterest, Telegram, WhatsApp, Threads, Bluesky, Mastodon, Discord, Snapchat, GitHub, Aparat, Bale, Eitaa and Rubika. Use **Custom link** for other public destinations. You do not need to connect an account or provide its password to display a public link. Existing Instagram, Telegram and WhatsApp website links appear automatically. Saving an empty account list removes the displayed links; old links do not reappear. ## Choose where links appear Use **Header top bar**, **Footer** and **Mobile menu** to control the shared locations. Enabling the header location also makes the social top bar available when the announcement bar is disabled. Choose **Icons** or **Icons and names** for the appearance. These settings apply across all website templates. Header and footer builders link back to this page and preview your saved accounts. Their reset controls do not reset the central social settings. ## Choose icon styles and motion Under **Icon style and motion**, select **Header top bar**, **Footer**, **Mobile menu** or **Page blocks**. Each location keeps its own design. Choose one of six styles: **Minimal**, **Brand colors**, **Glass**, **Soft depth**, **Light halo** or **Named capsule**. Capsule always includes account names. Select **Compact**, **Standard** or **Large**. Under **Icon motion**, choose **Off**, **On interaction** or **Gentle attention**. Save your changes to apply the design. The style cards show example accounts. The location preview below them shows your enabled accounts assigned to that location; its dark background switch affects only the preview. If the preview is empty, check that the location and at least one assigned account are enabled. Existing settings start with still Minimal icons. **On interaction** animates when a visitor hovers, focuses or touches a link. **Gentle attention** starts after an icon has been visible for 3 seconds, accents one visible icon at a time for about 0.7 seconds, and then rests for 9 seconds. Minimal and Soft depth move up by 2 pixels; Brand colors, Glass and Named capsule show a passing gleam; Light halo shows a fading ring. Gentle attention stops when icons leave the viewport or the browser tab is hidden. All motion respects the visitor's reduced-motion setting. The icons have fixed dimensions and do not use external icon downloads or an animation library. ## Place a linked block on a page Open the visual editor for the homepage, a custom page, or a product description. Drag **Social profiles** from the block list to the desired location. Select the block to choose its appearance and alignment. New blocks use the website's **Page blocks** design. You can select a different icon style, size or motion for one block, or choose **Use website setting** to follow the shared design again. The block uses the current saved accounts. When you update an account, all linked blocks follow the change. An empty or disabled account list displays no social block to visitors. Save the page or product editor; for homepage drafts, use the existing Publish action to make the layout live. ## Enable product and article sharing Under **Share your content**, enable product pages and/or blog articles, then save. Visitors can copy a clean public page link. Supported browsers also show the device's native sharing control. If copying is unavailable, a selectable link is shown for manual copying. Sharing does not require any account links. Private previews do not expose share controls. The visitor chooses the destination and completes the share themselves. ## Save, visibility and recovery Saving account settings refreshes the website configuration and queues configuration synchronization for a connected self-hosted storefront. It does not publish an unpublished website; domain verification and publication requirements still apply. If loading fails, select **Retry** before editing. If saving fails, your edits remain in the form. If a message says the settings were saved but the website could not be refreshed, save again to retry the refresh. For a self-hosted site that has not updated yet, check its synchronization status. Official enabled identity profiles can appear in the store's structured data. WhatsApp contact links and Discord invitations are excluded. Account links and sharing controls support discoverability, but do not guarantee a search ranking or SEO checker score. --- Source: https://directsale.ai/help/storefront/search-console # Google Search Console Connection and SEO Evidence Use **Storefront > Search Console** to connect your site's search-performance data. This is separate from adding a verification tag in Storefront Integrations. ## Before you start Use a Google account authorized for the site's Search Console property. Verify the correct domain/property in Google first. An unrelated property may connect successfully but will not describe your current storefront. Search Console reports observed traffic; it is not a market-wide keyword-volume service. ## Connect and inspect 1. Open Search Console from the Storefront section. 2. Start the Google connection and review the requested authorization. 3. Select the property matching the site's real domain. 4. Return to the panel and confirm the property/connection state. 5. Choose the available reporting period and inspect clicks, impressions, CTR and position, together with query and page data. 6. Open a specific query/page where offered and compare its URL with the published product or page. 7. Return after Google has collected data; a new or low-traffic property may have no rows. ## Understand the metrics - **Impressions:** observed search appearances for the selected data range. - **Clicks:** visits attributed to those search results. - **CTR:** clicks relative to impressions, not checkout conversion. - **Position:** the reported search-position metric, not a guaranteed rank. Missing queries do not prove there is no demand. Date ranges, property permissions, recent publication, indexing and reporting delays affect available data. ## Use evidence in content generation In **SEO + AI**, inspect the evidence status before approving a keyword brief. When Search Console is not connected or has no suitable evidence, suggestions can use saved product/page facts instead. Review the proposed primary phrase against other pages and products in the tenant SEO section. Supporting terms can be shared; avoid forcing unrelated unique phrases. See [Product SEO + AI](https://directsale.ai/help/products/seo-ai) and [Page/Blog SEO + AI](https://directsale.ai/help/storefront/content-seo-ai). Apply/save behavior differs between the product pilot and the page editor. ## Verification and troubleshooting Confirm the selected property and period before comparing reports. If authorization expires, reconnect using the authorized Google account. If no property is offered, check ownership/access in Google. If a page is missing, confirm its canonical public URL and publication status; a private preview is not an indexable public site. Connection and keyword suggestions do not guarantee indexing, rankings or future AI citations. --- Source: https://directsale.ai/help/storefront/self-hosted # Self-Hosted Storefront Use **Dashboard > Deploy** to place the public storefront on a VPS you control. Products remain in the central catalog for dashboard management and AI search. A published copy of the catalog, services, images, fonts, theme, pages, blog posts, forms and checkout settings is stored on the VPS so the website can keep serving visitors during a platform outage. The dashboard, billing, AI tools and chatbot remain platform services. Self-hosting moves the website and its website-facing data; it does not move the tenant panel. ## What you need - An Ubuntu 22.04 or 24.04 VPS with root SSH access or an SSH account authorized to use sudo as root - A domain whose DNS points to the VPS - Inbound ports 80 and 443 open; keep the storefront's internal port 3000 closed publicly - At least 2 vCPU, 2 GiB RAM and 20 GiB SSD for a pilot - For production, start with 2-4 vCPU, at least 4 GiB RAM, 30 GiB SSD and 2 GiB swap Keep at least 8 GiB free before an on-server build. Actual capacity depends on traffic, catalog size, images and backups. ## Install the website 1. Open **Deploy** and enter the website domain without `http://` or `https://`. 2. Enter the numeric VPS IP, SSH username and SSH password. 3. Select **Set up website**. 4. Review the server report. Resolve blockers and explicitly accept any capacity warnings before continuing. 5. Wait for the result dialog. A successful result confirms the container, HTTPS certificate and initial publication. 6. Save the displayed SSH guidance and change the server password after installation. During installation, Deploy shows milestone percentages and short stage names such as server preparation, container setup, security, memory, website build and HTTPS. It does not show SSH commands or raw server output. If installation stops, give support the displayed code, for example `VPS-33-SWAP_SETUP_FAILED` for a memory preparation failure. The percentage marks a completed stage; it does not estimate remaining time. The preflight report shows how many managed websites share the VPS without listing their domains or services. If the progress connection is interrupted, the panel checks the saved installation status instead of reporting installation failure. You can reopen Deploy to follow the same installation, or select **Check installation status**. Do not start another installation while the result is unknown. If the API service was interrupted during an SSH operation, check the existing website before retrying; setup does not automatically repeat uncertain commands. At **Publishing website content**, the website has been installed and its content and images are being transferred. Large catalogs can take several minutes. Temporary network failures retry automatically, and images already transferred are reused. A successful result appears only after the full initial publication is acknowledged. On a fresh supported VPS, setup installs required Ubuntu packages, Docker, Docker Compose and Fail2ban when missing. It configures a shared HTTPS gateway, obtains and renews SSL automatically, creates swap when required, isolates the website and publishes the first snapshot. SSH credentials are used only for that installation request and are not stored in the panel. ## Servers without direct root login If your provider gives you `ubuntu`, `debian`, `admin` or another SSH account, enter that actual username and its SSH password. Do not enter `sudo su` as the username. The panel runs required administrative commands through sudo automatically; you do not need to open a terminal and switch users first. The VPS must still run a supported Ubuntu version, regardless of the account's name. The account must have permission to run a root shell through sudo, either without a sudo password or using the same password entered for SSH. A separate sudo password, interactive one-time code or policy requiring an interactive terminal is not supported by this form. If the readiness check fails, ask the provider for a supported administrative account. DirectSale does not change sudo policy or enable direct root SSH login. Sudo authentication is sent through the encrypted session input, never included in a shell command, saved script or tenant progress log. Temporary credentials are not stored. Website updates, backup/removal, backup downloads and mail/monitoring upgrades can use the same supported sudo account; files and backups remain protected by root-only permissions. ## Restricted installation downloads If your provider restricts package downloads, select **Use SSH for installation downloads** before setup. This explicitly approves a temporary connection for approved software repositories. You can also approve this path from a network-failure result and retry. The connection is removed when installation finishes and is not needed for normal website operation or later content sync. Building Docker image covers downloading native dependencies, installing website packages and compiling the application. Its milestone percentage can remain unchanged for several minutes. A stalled package download has a time limit and returns a network error; retry using the SSH download option. Do not run a second installation while the first is still active. If your session ends, check the website/server state before retrying. ## More than one website on a VPS A managed VPS can host several DirectSale websites. Each website has its own container, data, uploads, sync token, resource limits and signed ownership marker. Ports 80 and 443 are shared through the HTTPS gateway. The server review identifies existing managed websites. A free domain can be installed as another isolated site. A domain owned by another tenant is rejected and is never claimed or overwritten. The installer also leaves unrelated services and containers unchanged. ## Publication and offline operation Dashboard changes trigger authenticated HTTPS publication. This includes products, variants, stock, categories, descriptions, images, services and their public providers, fonts, theme, homepage, published pages and blog posts, forms, store details, SEO, shipping and supported checkout settings. Draft pages and posts remain private until they are published. After setup, open **Multichannel > Linked Stores > Linked website on VPS** to manage synchronization. The card also remains available in Deploy. It compares central and VPS product counts, shows the latest publication and reports pending changes or errors. **Sync now** queues a full publication; wait until pending changes clear to confirm completion. **Test connection** in Deploy checks the secured endpoint. Failed deliveries retry automatically. Ordinary saved changes begin publication automatically; you do not need to press Sync now for each edit. Accepted changes clear the local website cache, including detail pages. Images already present on an updated VPS are reused; changed image bytes get a new address so browsers display the updated image. Draft content still requires Publish. A network failure or rate limit can delay publication and remains visible in the card. After a successful publication, the public website reads its local copy and does not need the platform to render pages or accept supported local orders and form submissions. Service pages and provider names are local; live slot checks, appointment booking and service work requests use the central service scheduler so availability and monthly limits remain authoritative. Source-code releases and newly shipped template components require a website upgrade or redeploy; ordinary content sync does not replace the application image. ## Update an existing website Ordinary product, price, stock, design and published content changes sync automatically. New application code, technical SEO fixes and new template components require **Deploy > Website updates** after the platform release has been deployed. **Secure upgrade** adds monitoring; it does not update the storefront application. 1. Open **Deploy > Website updates** for the connected website. Its domain is filled in automatically. 2. Enter the numeric VPS IP, root or supported sudo SSH username and password, then select **Check website version**. 3. Review the verified installation and acknowledge the brief restart and private backup. 4. Select **Update website**. Follow the ownership check, source transfer, backup verification, build, website replacement and health check. Builds commonly take several minutes and can take longer on a small VPS. 5. After success, wait for catalog publication to finish in **Linked website**. If publication could not be queued, select **Sync now**. Download the verified backup and keep it securely outside the VPS. The existing website resumes after its backup and stays available while the new application is built. Only this website restarts during replacement. Persistent products, orders, submissions, images, configuration and sync credentials are retained. Other websites, the shared HTTPS gateway and mail services are preserved. SSH credentials are used only for the session and are never stored. If the new version fails its health check, the operation attempts to restore the previous application automatically. **Check website version > Restore previous version** also allows a manual return to the previous release. Version rollback keeps current website data; it does not restore an old customer database or undo new orders. The previous image and private backup are retained on the VPS. Keep the panel open to view progress. A lost progress connection does not cancel the server operation: check the website again before retrying. An interrupted replacement requires **Restore previous version** before another update. A failed recovery requires support and retains the verified backup. Previously stopped websites remain stopped after a successful update. Updates require a currently connected managed installation with a valid signed ownership marker, Docker Compose v2, at least 2 GiB total RAM, enough available memory or swap and at least 8 GiB free disk before a build. The backup also needs enough free space for the site's data. Custom Compose configurations, external volumes and unverified legacy installations need support-assisted updates. No additional DNS records are needed when the website domain and VPS stay the same. ## VPS monitoring and website controls Current installations show live VPS CPU, RAM, swap and storage together with this website's CPU, RAM, storage, health and uptime. You can start, stop or restart only the current tenant website. Stopping one website does not stop the shared gateway or another tenant's site. Older installations can show **Secure upgrade**. Enter the VPS IP and temporary SSH credentials to add the management agent and secured gateway route without reinstalling the website or removing its data. Wait for the progress result, then refresh the resource card. Change the SSH password after the upgrade. ## Security and maintenance - Keep the sync token private. Rotating it invalidates the old token after the protected transition period. - Restrict SSH access at the VPS provider where possible and keep Ubuntu security updates enabled. - Back up the site's persistent data and uploads. Container images alone are not a backup. - Do not expose container port 3000 or the management agent port to the internet. - A VPS owner with root access can always change files or databases outside DirectSale controls. ## Return to platform hosting Select **Transfer data, disconnect and return to platform** to import VPS-only orders, form submissions, newsletter addresses and reviews, then end the connection. This action does not delete, stop or modify the website or any files on the VPS. The remaining VPS website becomes the server owner's responsibility and new activity there no longer reaches the panel. If the VPS is unreachable, the panel explains that transfer cannot be verified and can offer **Disconnect without transfer** after a separate confirmation. VPS-only activity is not imported in that path. Update external DNS to the platform hosting target and verify the domain before relying on the managed website. ## Back up or remove a VPS website Open **Deploy > Website backup & removal**. This tool also works after disconnecting the website from the panel, provided the installation still has a valid ownership marker for this tenant and domain. 1. Enter the website domain, numeric VPS IP, root or supported sudo SSH username and password. 2. Select **Check website**. The panel verifies the installation, domain and tenant ownership, then shows the backup size, free disk space and previous backups. 3. Select **Create backup only** to keep the website, or choose **Back up & remove website** for a clean reinstall. Removal requires acknowledging the downtime and typing the exact domain. 4. Follow the progress: verification, pause this website, create backup, verify backup, then either restart this website or remove its domain route and installation. A successful removal also disconnects its panel link. 5. Select **Download backup** and keep a copy outside the VPS. Use **Delete backup** to remove one archive from the VPS, or **Delete all backups** to clear the verified backup set for this website. Both actions require typing the exact domain. After successful removal, use **Set up website** to install again with the same domain and SSH details. The website pauses briefly while a consistent backup is created. A previously stopped website stays stopped after backup-only. The backup contains this website's persistent data, customer database, uploads and private site configuration. Build caches and installed dependencies are excluded. It is a private archive on the VPS, not a public download link. SSH passwords are used only in the current session and are never stored. Removal affects only the verified tenant/domain installation. Other websites, the shared HTTPS gateway and email delivery are preserved. Central products stay in your catalog. VPS-only orders and submissions remain in the backup and are **not imported automatically** by removal; use **Transfer data, disconnect and return to platform** first if you need them imported into the panel. Website backups do not include email; use the separate email backup tool for mailboxes. If backup creation or verification fails, removal is blocked. Before removal finishes, the tool attempts to restore this website's previous running state and domain route when a service operation fails. An unverifiable ownership marker, external storage or a custom installation layout blocks automatic removal and requires support. The tool supports managed website data up to 16 GiB and needs enough free disk for the archive; larger installations need a support-assisted backup. Keep the page open during the operation. If the progress connection ends, select **Check website** again before retrying. A verified backup retained after a failed operation appears in the backup list. If the website was removed but its panel link could not be disconnected, refresh Deploy and complete the existing disconnect workflow before reinstalling. The latest ten backups are listed, while the summary includes the total count and storage used by all verified backups for this website. **Delete all backups** also removes verified backups older than the displayed ten. If the backup set changes after inspection, bulk deletion stops safely; select **Check website** and review it again. Unknown or invalid directories are left untouched. Download access expires after one hour, while deletion approval expires after 15 minutes; **Check website** renews access after verifying your SSH connection. Chrome and Edge can stream large downloads directly to disk; other browsers support downloads up to 512 MiB. ## Troubleshooting Website update, previous-version restore, backup, removal, download and backup-deletion controls use your selected panel language in all 18 supported languages. Confirmation warnings, progress stages and operation errors are also translated. Changing the panel language does not require reinstalling your VPS website. Installation and content publication are separate checks. Confirm the result dialog reports success, HTTPS opens publicly, **Test connection** succeeds and **Linked website** shows no pending changes. For a failure, read the named stage and sanitized error. Common causes are DNS pointing elsewhere, blocked ports 80/443, inadequate RAM or disk, an SSH host-key change after the server was reinstalled, a domain already owned by another tenant, or another service using the required ports. Do not disable TLS or overwrite another site to bypass a failed check. See [Self-Hosted Email](https://directsale.ai/help/storefront/self-hosted-email) for mailboxes on the same managed VPS and [Domain and Publication](https://directsale.ai/help/storefront/domain) for platform hosting. --- Source: https://directsale.ai/help/storefront/self-hosted-email # Self-Hosted Email Use **Dashboard > Deploy > Email Hosting** to manage mailboxes stored on a connected self-hosted VPS. Website containers remain isolated, while the VPS runs one secured mail service that can host separate domains and mailboxes for several tenants. Email hosting is available after the self-hosted website is connected. If the VPS does not have the shared mail service, enter the VPS IP, SSH username and SSH password and select **Install email system**. DirectSale installs one isolated shared Mail Core per VPS and provisions the connected website's domain. The SSH password is used only for that installation request and is never stored. If another DirectSale website on the same VPS already installed Mail Core, the installer verifies its host marker and adds only this tenant's domain. An existing domain without a matching ownership marker is not claimed or overwritten. ## Installation availability If the panel says **Email installation is not available yet**, contact platform support. The platform must enable its automatic mail-host DNS service first; entering different tenant DNS records or repeatedly supplying SSH credentials cannot enable that service. Once enabled, install Mail Core and publish the tenant-managed records displayed by the panel. Platform DNS credentials are configured by the administrator, not supplied by tenants. Check the VPS provider's firewall as well as the server firewall: inbound SMTP 25 is needed for receiving, outbound TCP 25 for Direct MX delivery, and client access uses 993 plus the displayed submission port 465 or 587. Website ports 80/443 alone do not enable email. The VPS provider also controls reverse DNS. ## DNS records After installation, copy the exact records displayed in **Required DNS records** to the domain's DNS provider. Keep mail host records in DNS-only mode when the provider offers an HTTP proxy option. Select **Check DNS** to query public DNS again; each row shows its own verification state. The usual record groups are: - An **A** record for the displayed neutral mail hostname pointing to the VPS; DirectSale creates rows marked **Automatic** - An **MX** record for the tenant domain pointing to that mail hostname, with its priority entered in the DNS provider's separate Priority field - An **SPF** TXT record - One or more **DKIM** TXT records generated for that domain - A **DMARC** TXT record Copy names and values exactly. For MX rows, the Value copy button copies only the mail hostname; enter the displayed number, such as `10`, separately in the provider's Priority field. Do not add the priority number to the MX value. Do not reuse another tenant's DKIM value. Reverse DNS is configured by the VPS provider for the server IP and can name only one primary mail hostname; it does not replace the per-domain DNS records. DirectSale creates the neutral shared mail hostname under the platform mail domain and points it to the VPS automatically. The tenant publishes only the displayed records that are not marked **Automatic**. Mailbox creation remains disabled until every required record is publicly verified. DNS changes can take time to propagate. Mail may be received before every sender trusts new SPF, DKIM and DMARC records. If checks disagree immediately after a DNS change, allow cached answers to expire and recheck. Compare the exact hostname, record type, MX priority and complete TXT value with your provider; TXT strings split for display must still represent one complete value. Never recreate DKIM keys solely because a cached check is pending. Copy controls show confirmation after a successful clipboard write; if copying is denied by the browser, copy the displayed value manually. ## Create a mailbox 1. Open **Email Hosting**. 2. Enter the mailbox name, such as `sales`, and choose its quota in MiB. 3. Select **Create**. 4. Copy the generated password from the result dialog and save it in a password manager. The password is displayed once and is not stored in the panel. The first mailbox also receives the required `postmaster` and `abuse` aliases where shown. These aliases help with mail operations and should remain reachable. ## Connect an email application After installation, **Email app settings** displays the exact server name, ports, encryption and username format for this VPS. The same settings work with Gmail mobile, Outlook, Apple Mail, Thunderbird and other standard IMAP clients: - IMAP over TLS on port 993 for incoming mail - SMTP submission on port 465 or 587 for outgoing mail - The full email address as the username In the Gmail mobile app, choose **Add another account > Other > Personal (IMAP)** and enter the displayed IMAP and SMTP values. Use this separate IMAP account for sending and receiving. Google's January 2027 changes retire third-party Send as and web POP fetching, while direct third-party account access in the mobile app remains supported. Gmail web is not a durable connection method for this mailbox. See [Google's third-party account guidance](https://support.google.com/mail/answer/17101213). Use TLS and certificate validation. Use the mailbox password shown during creation or password reset, not the DirectSale or VPS password. Port 25 is for server-to-server delivery and must not be used as an ordinary mailbox submission setting. ## Passwords, quotas and deletion Use **Reset password** when a password is lost or exposed. The new value is shown once; update every connected device afterward. Changing a mailbox password does not change SSH or dashboard credentials. The quota chosen during creation limits stored mail for that mailbox. Change the MiB value beside an existing mailbox and select **Save quota** to update it. Check free VPS storage and backups before increasing quotas. Deleting an individual mailbox permanently removes its stored messages. The ordinary mailbox Delete button prevents deletion of the final mailbox so required administrative aliases do not become unreachable. Create a replacement mailbox first. The separate SSH maintenance workflow below can deliberately clear all mailboxes after backup verification. ## Disconnect, clear or remove email Open **Email connection & removal** near the top of **Email Hosting**. Enter the website domain, numeric VPS IP, SSH username and password, then select **Verify this installation**. Use root or a full sudo account; the sudo password must be the same as the SSH password. SSH credentials are used for this session only. The connected website's signed ownership marker and pinned SSH host key must match the current tenant. If **Upgrade secure management** appears, run that upgrade first. It updates the private host agent and does not erase mail or reinstall the website. Choose the operation you need: | Button | Result | | --- | --- | | **Disconnect email management** | Disables this domain's panel mail management. Existing mailboxes, messages and mail delivery remain on the VPS. The website stays connected. To reconnect, use **Install email system** with verified SSH access; the installer attaches to the existing owned domain. | | **Delete all tenant mailboxes** | Creates and verifies an encrypted backup, then deletes every user mailbox and its messages in this domain. The administrator, domain configuration, DKIM keys and mail server remain. Create new mailboxes from the panel afterward, or restore the downloaded mailbox backup. | | **Remove mail server** | Removes a verified, exclusive DirectSale mail server, its active configuration, mail volumes, private network and mail route. It is blocked when another domain or unverified resource uses that server. Website files, website containers and the shared HTTPS gateway remain. | Type the exact domain and select the acknowledgment before running the operation. When deleting existing mailboxes, provide a backup password of at least 12 characters. A failed backup blocks deletion. Progress shows percentages and operation titles; failures show stable support codes, never raw SSH or Docker logs. If progress is interrupted, inspect again before retrying. Download the verified `.ds-mail-backup.gpg` file and keep it outside the VPS with its backup password. Portable mailbox backups expire after 24 hours; download authorization lasts one hour and can be renewed by verifying the installation again. Downloads remain available in this maintenance section after full server removal while the backup file still exists. Full server removal also creates a private server recovery archive on the VPS for operator recovery. That archive contains server secrets and is never downloadable through the tenant panel. It is not an off-site backup. Removing a shared mail server is intentionally unavailable; use the domain-scoped clear or disconnect options instead. To reinstall after full removal, use **Install email system** on the same connected website. Publish the newly displayed MX and DKIM records, verify DNS, then recreate mailboxes or upload the portable backup and restore it in merge mode. New mailbox passwords are displayed once. Old DNS records are not automatically deleted, so replace obsolete mail records at your DNS provider. You do not need to reinstall the website. ## Download and restore a backup Open **Encrypted email backups** on the Email Hosting page. A backup is scoped to the selected mailboxes of the current domain; it never contains another tenant's mailbox or the shared mail server configuration. To download a backup: 1. Select one or more mailboxes. 2. Enter and repeat a backup password of at least 12 characters. 3. Select **Create encrypted backup** and follow the progress shown on the page. 4. When the job is ready, select **Download**. The password encrypts the file on the VPS and is never stored by DirectSale. It cannot be recovered. Save it in a password manager. Download links are short-lived and one-time, and temporary backup files are removed from the VPS after 24 hours. To restore a backup, choose the downloaded `.ds-mail-backup.gpg` file, enter its password and select **Upload and inspect**. The browser uploads the file directly to the VPS. DirectSale first checks the password, domain, package paths and archive checksums. **Restore safely (merge)** appears only after the file passes inspection. Restore is additive: existing messages remain and missing content is added. If a mailbox from the backup no longer exists, DirectSale recreates it and displays its new password once. Save every displayed password immediately. The panel does not offer a destructive exact-copy restore. An older installation may show **Secure mail backup upgrade**. Enter the VPS IP and temporary SSH credentials there. The upgrade adds only the current management agent, encryption utility and restricted JMAP routes; it does not reinstall the website, mail service or existing messages. Change the SSH password afterward as usual. ## Delivery and security When direct delivery is available, the server sends mail to recipient MX servers over port 25. No third-party SMTP account is required for that mode. Successful submission only proves that the receiving server accepted the message; inbox placement still depends on DNS reputation, IP reputation and recipient filtering. Each tenant has separate domain records, accounts and mailbox storage. Website and email services are separate, so a stopped website does not automatically delete mail. The VPS owner still controls the host and must maintain security updates, backups, disk capacity, reverse DNS and IP reputation. If sending or receiving fails, refresh the status, verify every displayed DNS record, confirm the VPS provider allows the required mail ports, check storage and retry with a newly created test message. Never send mailbox, SSH or sync passwords in a support request. --- Source: https://directsale.ai/help/conversations/index # Conversations The **Conversations** section is your central hub for monitoring and managing all customer interactions across every connected channel. Whether a customer reaches out through your website chat widget, Telegram, WhatsApp, or Instagram, every conversation appears here in a single, unified inbox. ## What You Can Do | Feature | Description | |---------|-------------| | **View All Conversations** | See every customer conversation in one place, regardless of which platform it originated from | | **Search & Filter** | Find conversations by customer name, phone number, or platform user ID, and filter by status | | **Read Full Chat History** | Open any conversation to see the complete message history between the customer and the AI chatbot | | **Take Over from AI** | Manually take control of an active AI conversation to provide human support | | **Send Messages** | Type and send messages directly to customers when in human operator mode | | **Voice Messages** | Record and send voice messages to customers | | **File Attachments** | Upload and send images, PDFs, and documents to customers | | **Resume AI** | Hand the conversation back to the AI chatbot after you have finished helping the customer | | **Monitor Lead Scores** | Track each conversation's lead score to identify high-value prospects | ## How It Works The Conversations page is divided into two main panels: 1. **Conversation List (left panel)** -- A scrollable list of all conversations, showing the customer name or identifier, status badge, last activity time, lead score, and message count. 2. **Conversation Detail (right panel)** -- When you select a conversation from the list, the full message thread appears here, along with controls for sending messages, taking over from the AI, or resuming AI control. ### Conversation Statuses Every conversation has one of three statuses: | Status | Color | Description | |--------|-------|-------------| | **Active** | Green | The AI chatbot is actively handling this conversation. New customer messages will receive automated AI responses. | | **Handed to Human** | Amber/Yellow | The conversation has been transferred to a human operator. The AI will not respond until it is resumed. This can happen automatically (when the AI detects frustration or a complex query) or manually (when an operator clicks "Take Over"). | | **Closed** | Gray | The conversation is no longer active. No new messages are expected. | ### Real-Time Updates The conversations page updates automatically in the background: - The **conversation list** refreshes every 10 seconds to show new conversations and status changes. - The **selected conversation messages** refresh every 3 seconds so you can see new messages as they arrive without needing to manually reload the page. > **Info:** You do not need to refresh the page to see new messages. The system automatically polls for updates every few seconds. If a customer sends a message or the AI responds, it will appear in the conversation thread shortly. ## Role-Based Access Not all team members have the same level of access to the Conversations section: | Role | Access Level | |------|-------------| | **Owner** | Full access -- can view conversations, send messages, take over, and resume AI | | **Admin** | Full access -- same as Owner | | **Manager** | Full access -- can view and manage conversations | | **Operator** | Full access to conversations -- can view, send messages, and manage handoffs | | **Viewer** | Read-only access -- can view conversations and messages but cannot send messages or change statuses | | **Accountant** | No access to the Conversations section | > **Warning:** Users with the **Viewer** role will see a "Read-only access" notice in the message input area and cannot send messages, take over conversations, or resume AI. They can only observe conversation threads. ## Navigation The Conversations section shares a navigation bar with the **Chat Studio**. You will see two tabs at the top: - **Conversations** -- The conversation management page (described in this section) - **Chat Studio** -- The AI chatbot configuration and testing environment (see [Chat Studio & Knowledge Base](https://directsale.ai/help/chat-studio/index)) ## Next Steps - Learn how to [manage conversations](https://directsale.ai/help/conversations/managing-conversations) -- search, filter, and change conversation statuses. - Understand how to [send messages](https://directsale.ai/help/conversations/messaging) -- text messages, voice recordings, and file attachments. - Explore the [lead scoring](https://directsale.ai/help/conversations/lead-scoring) system to prioritize high-value customer interactions. --- Source: https://directsale.ai/help/conversations/managing-conversations # Managing Conversations This guide covers how to find, filter, and manage customer conversations in the Conversations section of the dashboard. You will learn how to use the search and filter tools, navigate between conversations, take over from the AI, and resume AI control. ## Conversation List When you open the **Conversations** page, the left panel displays a list of all conversations. Each conversation card shows: - **Customer avatar and name** -- The customer's name if available, otherwise their platform user ID. If neither is available, it displays "Unknown." - **Phone number** -- The customer's phone number, if provided. - **Status badge** -- A colored badge indicating whether the conversation is Active (green), Handed to Human (amber), or Closed (gray). - **Last activity time** -- The date and time when the conversation was last updated. - **Lead score** -- A numeric score (0--100) indicating how likely the customer is to convert. The color changes based on the score (green for high, amber for medium, gray for low). - **Message count** -- The total number of messages in the conversation. The list is sorted by most recently updated conversations first, with up to 10 conversations shown per page. ## Searching Conversations You can search for specific conversations using the search bar at the top of the conversation list. 1. Click the **search input field** at the top of the conversation list panel. 2. Type your search query. You can search by: - **Customer name** -- Partial or full name match (case-insensitive) - **Phone number** -- Partial or full phone number match - **Platform user ID** -- The identifier assigned by the messaging platform 3. The conversation list filters in real time as you type. > **Info:** The search operates on the conversations currently loaded on the page. It filters the displayed list client-side, so pagination still applies to the full dataset. If you do not find the conversation you are looking for, try adjusting your status filter or navigating to a different page. ## Filtering by Status Below the search bar, you will find a status filter dropdown that lets you narrow the list to conversations with a specific status. 1. Click the **status dropdown** (shows "All Statuses" by default). 2. Select one of the available options: - **All Statuses** -- Show all conversations regardless of status - **Active** -- Show only conversations where the AI is currently handling responses - **Closed** -- Show only conversations that have been closed - **Handed to Human** -- Show only conversations that are currently assigned to a human operator 3. The conversation list reloads automatically with the selected filter applied. 4. To clear the filter, click the **X** button that appears next to the dropdown, or select "All Statuses" again. > **Info:** The status filter is applied server-side, so it affects the entire dataset, not just the currently visible page. When you change the filter, the page resets and loads fresh results. ## Pagination If you have more conversations than can fit on a single page, pagination controls appear at the bottom of the conversation list. 1. Click the **Next** arrow button to go to the next page of conversations. 2. Click the **Previous** arrow button to return to the previous page. 3. The current page number and total pages are displayed between the buttons (e.g., "Page 2 of 5"). Each page shows up to **10 conversations**. ## Selecting a Conversation To view the full message history and details of a conversation: 1. Click on any conversation card in the list. 2. The conversation detail panel (right side) loads with: - **Customer header** -- Customer name, platform, creation date, status badge, and lead score - **Message thread** -- The complete message history, with user messages on one side and AI/operator messages on the other - **Message input area** -- Controls for sending messages (when applicable) The selected conversation is highlighted with a blue ring in the conversation list. ## Taking Over from AI When the AI is actively handling a conversation (status: Active), you may want to step in and respond manually. This is called "taking over" the conversation. 1. Select a conversation that has the **Active** status. 2. In the message input area at the bottom of the conversation detail panel, you will see a **"Take Over"** button with an amber/yellow color. 3. Next to it, a message reads: "AI is handling this conversation." 4. Click the **"Take Over"** button. 5. The conversation status changes to **"Handed to Human"** immediately. 6. The AI chatbot stops responding to this conversation. 7. The message input area now shows a text input field, allowing you to type and send messages directly. > **Warning:** After you take over a conversation, the AI will no longer respond to customer messages in that thread. You are responsible for responding until you resume AI control. The customer will not be notified that a human has taken over -- the transition is seamless from their perspective. ## Resuming AI Control When you have finished assisting a customer and want the AI to resume handling the conversation: 1. Select a conversation that has the **"Handed to Human"** status. 2. In the conversation header (top right), you will see a **"Resume AI"** button with a green color and a play icon. 3. Click the **"Resume AI"** button. 4. The button shows a loading spinner while the status is being updated. 5. Once complete, the conversation status changes back to **"Active"**. 6. The AI chatbot resumes responding to customer messages automatically. When AI is resumed, the system: - Updates the conversation status to "Active" - Sends the customer a short notice, in the conversation language, that the AI assistant is active again - Saves the delivered notice in the conversation history - Resets the AI session's frustration score so the bot can respond freshly > **Info:** Resuming AI clears the frustration detection state for the conversation. This means the AI starts with a clean slate and will not immediately re-trigger a handoff unless the customer shows new signs of frustration. > **Warning:** If the customer notice cannot be delivered, AI remains paused. Correct the platform connection or Instagram Conversation Routing issue shown in the dashboard, then try again. ## Understanding Conversation Status Transitions The following diagram shows how conversation statuses flow: ``` +------------------+ | Active | | (AI responding) | +--------+---------+ | +----------------+----------------+ | | Manual Take Over Auto Handoff (AI detects (operator clicks frustration, user request, "Take Over") complex query, etc.) | | +----------------+----------------+ | +--------v---------+ | Handed to Human | | (operator mode) | +--------+---------+ | Resume AI (operator clicks "Resume AI") | +--------v---------+ | Active | | (AI responding) | +------------------+ ``` ### Automatic Handoff Triggers The AI can automatically hand off a conversation to a human operator when it detects any of the following situations: | Trigger | Description | |---------|-------------| | **User Request** | The customer explicitly asks to speak with a human agent | | **Frustration Detected** | The AI detects signs of customer frustration based on message patterns | | **Repeated Objections** | The customer repeatedly objects or expresses dissatisfaction | | **Complex Query** | The customer's question is beyond the AI's capability to answer | When an automatic handoff occurs, notifications are sent to the business owner and relevant team members (admins, managers, operators) via email and optionally via Telegram. ## Conversation Detail Header When viewing a selected conversation, the header at the top provides key information at a glance: - **Customer avatar** -- A blue circle with a user icon - **Customer name** -- The name of the customer, or their platform user ID if no name is available - **Platform and date** -- The messaging platform (website, telegram, whatsapp, instagram) and the conversation creation date - **Status badge** -- The current status of the conversation - **Resume AI button** -- Appears only when the conversation is in "Handed to Human" status - **Lead score** -- Displayed with color coding: green (70+), amber (40--69), gray (below 40) ## Multi-Platform Support Conversations can originate from multiple platforms, and operator messages are delivered back to customers through the same platform they used: | Platform | How It Works | |----------|-------------| | **Website** | Messages are delivered via the embedded chat widget using WebSocket | | **Telegram** | Messages are sent through the connected Telegram bot | | **WhatsApp** | Messages are sent through the connected WhatsApp Business account | | **Instagram** | Messages are sent through the connected Instagram account | > **Info:** When you send a message as an operator, it is automatically routed to the correct platform. For example, if a customer started a conversation via Telegram, your operator response will be delivered to them on Telegram. You do not need to switch between different apps. ## Operator Message Attribution When an operator (human team member) sends a message in a conversation, the message is visually distinguished from AI responses: - Operator messages display a small **operator badge** with the operator's name (or email if no display name is set) - The badge shows a person-with-gear icon to differentiate from AI-generated messages - The operator's name and role are recorded in the message metadata for audit purposes This makes it easy to see which messages were sent by the AI and which were sent by human team members, even when reviewing conversation history later. --- Source: https://directsale.ai/help/conversations/messaging # Sending Messages This guide explains how to communicate with customers through the Conversations page, including sending text messages, recording and sending voice messages, and attaching files. > **Warning:** You can only send messages when a conversation is in the **"Handed to Human"** or **"Closed"** status. If the conversation is in **"Active"** status (AI is handling it), you must first click **"Take Over"** to switch to operator mode before you can send messages. Users with the **Viewer** role cannot send messages. ## Sending Text Messages When a conversation is in operator mode (Handed to Human or Closed status), a text input field appears at the bottom of the conversation detail panel. 1. Select a conversation that is in **"Handed to Human"** or **"Closed"** status. If the conversation is Active, click **"Take Over"** first. 2. Click the **text input field** at the bottom of the conversation panel. 3. Type your message. 4. Send the message using one of these methods: - Press **Enter** on your keyboard (Shift+Enter is not supported for multiline -- your message sends immediately on Enter) - Click the **Send** button (the arrow icon on the right) 5. The message appears in the conversation thread as an operator message, marked with your name and operator badge. 6. The conversation view refreshes automatically to show the sent message. > **Info:** Your message is delivered to the customer through the same platform they are using. If the customer is chatting via Telegram, your message is sent to their Telegram. If they are using the website widget, the message appears in their chat window in real time via WebSocket. ### Operator Message Indicators Messages sent by operators are visually distinguished from AI messages: - An **operator badge** appears above the message content, showing a person-with-gear icon and the operator's display name - This helps everyone on your team identify which messages were sent by humans versus the AI chatbot - The operator's name, ID, and role are stored in the message metadata for record-keeping ## Recording Voice Messages You can record and send voice messages directly from the conversation panel. Voice messages are saved as audio attachments. ### Starting a Recording 1. In a conversation that is in operator mode, locate the **microphone icon** button next to the text input field. 2. Click the **microphone** button. 3. Your browser may request permission to access your microphone. Click **"Allow"** to grant access. 4. Recording begins immediately. You will see: - A **red pulsing dot** indicating active recording - A **timer** showing the recording duration in MM:SS format - The text "Recording..." confirming the status - A **Cancel** button to discard the recording - A **Send** button (with a mute-microphone icon) to stop recording and send ### Sending the Recording 1. When you have finished speaking, click the **Send** button (shown with a red background and mute-microphone icon). 2. The recording stops and the audio is automatically sent as a voice message. 3. A loading indicator appears while the voice message is being uploaded and processed. 4. Once sent, the message appears in the conversation thread. ### Canceling a Recording 1. While recording, click the **Cancel** button. 2. The recording is discarded and no message is sent. 3. The audio data is deleted and the recording timer resets. 4. The microphone stream is stopped. > **Info:** Voice messages are recorded in WebM audio format. The audio file is uploaded directly to the server and saved as an attachment linked to the conversation. For operator voice messages, no speech-to-text transcription is performed -- the audio is sent as-is. ### Microphone Access - The first time you use voice recording, your browser will ask for microphone permission. - If you deny microphone access, an alert will inform you that the microphone was denied and you will not be able to record voice messages. - You can change microphone permissions in your browser settings at any time. ## Attaching Files You can upload and send files as attachments with your messages. File attachments are useful for sending documents, images, or other materials to customers. ### Supported File Types The following file types are supported for attachments: | Category | Supported Formats | |----------|------------------| | **Images** | JPEG, PNG, GIF, WebP | | **Documents** | PDF | | **Office Files** | Word (.doc, .docx), Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx) | ### File Size Limit Each file must be **10 MB or smaller**. Files exceeding this limit will be rejected with an error message showing the filename. ### Uploading Attachments 1. In a conversation that is in operator mode, locate the **paperclip icon** button to the left of the text input field. 2. Click the **paperclip** button. A file selection dialog opens. 3. Select one or more files from your computer. You can select multiple files at once. 4. Each file is validated for type and size: - If a file exceeds 10 MB, an alert appears: "File size exceeded" with the filename. - If a file type is not allowed, an alert appears: "File type not allowed" with the filename. - Valid files are uploaded immediately. 5. While uploading, the paperclip button shows a **loading spinner**. 6. Once uploaded, each file appears as a **preview chip** above the text input, showing: - A file type icon (image icon for images, document icon for other files) - The filename (truncated if too long) - An **X** button to remove the attachment before sending ### Sending Messages with Attachments 1. After uploading one or more attachments, you can optionally type a text message in the input field. 2. Click the **Send** button or press **Enter**. 3. The message is sent along with all pending attachments. 4. If you send attachments without any text, the message content defaults to "(Attachment)". 5. In the conversation thread, messages with attachments display a **paperclip icon** and a note indicating how many files were attached. ### Removing Attachments Before Sending If you change your mind about an attachment before sending: 1. Locate the attachment preview chip above the text input. 2. Click the **X** button on the attachment you want to remove. 3. The attachment is removed from the pending list. It will not be included when you send your next message. > **Info:** Attachments are uploaded to the server immediately when you select them, but they are not linked to a message until you click Send. If you navigate away from the conversation or close the page before sending, the uploaded attachments will not be attached to any message. ## Message Input States The message input area changes its appearance based on the current situation: | State | What You See | |-------|-------------| | **AI is active** | A "Take Over" button and the text "AI is handling this conversation." The text input is not available. | | **Operator mode (normal)** | A paperclip button, text input field, microphone button, and send button -- all ready for use. | | **Operator mode (recording)** | A red pulsing dot, recording timer, Cancel button, and Send button for the voice recording. The text input and other buttons are hidden. | | **Sending message** | The send button and input field are disabled with a loading spinner while the message is being sent. | | **Uploading file** | The paperclip button shows a loading spinner. The text input remains usable. | | **Viewer role** | A "Read-only access" notice. No input controls are shown. | ## Message Delivery When you send a message as an operator, the system routes it to the correct platform automatically: 1. **Website conversations** -- The message is pushed to the customer's chat widget in real time via WebSocket. The message also shows an operator indicator in the widget. 2. **Telegram conversations** -- The message is sent through the connected Telegram bot to the customer's Telegram chat. 3. **WhatsApp conversations** -- The message is sent through the connected WhatsApp Business API to the customer's WhatsApp. 4. **Instagram conversations** -- The message is sent through the connected Instagram messaging API. > **Warning:** For Telegram, WhatsApp, and Instagram conversations, you must have an active, connected messaging integration for that platform. If no active connection exists for the platform, you will see an error when attempting to send a message. You can set up messaging connections in the **Channels** section of the dashboard. ## Tips for Effective Messaging 1. **Review the conversation history** before responding. Scroll through the message thread to understand the context of the customer's inquiry. 2. **Be concise and clear** in your responses. Customers expect quick, helpful answers. 3. **Use attachments wisely** -- Send product catalogs, order confirmations, or instructional documents as needed. 4. **Resume AI when done** -- After you have resolved the customer's issue, click "Resume AI" so the chatbot can continue handling future messages in the conversation. 5. **Check lead scores** -- Higher lead scores indicate customers who are more likely to convert. Prioritize these conversations for personalized attention. --- Source: https://directsale.ai/help/conversations/lead-scoring # Lead Scoring Lead scoring is a system that assigns a numeric value (0--100) to each conversation, representing how likely the customer is to make a purchase or take a desired action. This helps you prioritize your time and attention on the most promising leads. ## How Lead Scoring Works Every conversation in the system has a **lead score** field that ranges from **0 to 100**: - **0** means the system has not yet detected any buying intent or engagement signals. - **100** means the customer has demonstrated very strong purchasing intent. The lead score is calculated and updated automatically by the AI as it interacts with customers. The score considers factors such as: | Factor | Impact | |--------|--------| | **Product inquiries** | Asking about specific products increases the score | | **Price questions** | Asking about prices or discounts signals buying intent | | **Comparison requests** | Comparing products indicates the customer is in a decision-making phase | | **Stock/availability checks** | Checking whether items are in stock suggests readiness to buy | | **Repeated engagement** | Multiple messages and return visits indicate sustained interest | | **Cart-related questions** | Questions about ordering, shipping, or payment show strong intent | | **General browsing** | Casual questions without specific product interest result in lower scores | ## Reading Lead Scores in the Conversation List In the conversation list (left panel), each conversation card shows the lead score with color-coded text: | Score Range | Color | Meaning | |-------------|-------|---------| | **70--100** | Green | **Hot lead** -- This customer is showing strong buying intent. They are likely close to making a purchase decision. Prioritize these conversations. | | **40--69** | Amber/Yellow | **Warm lead** -- The customer has shown moderate interest. They may need more information or a nudge to convert. | | **0--39** | Gray | **Cold lead** -- The customer has shown minimal buying intent so far. They may be browsing, asking general questions, or just exploring. | The score is displayed in the format "Score: XX" on each conversation card. ## Lead Score in Conversation Detail When you select a conversation, the lead score is also displayed in the conversation header (top right area), using the same color coding. This gives you immediate context about the customer's engagement level before you start reading the message history. ## Using Lead Scores to Prioritize Lead scoring helps your team focus their efforts where they matter most. Here are some recommended strategies: ### 1. Prioritize Hot Leads Conversations with scores of 70 or above should receive priority attention. These customers are actively considering a purchase and may need: - Quick responses to final questions - Help completing an order - Personalized product recommendations - Human support for complex requirements ### 2. Nurture Warm Leads Conversations with scores between 40 and 69 represent customers who need more engagement. Consider: - Proactively offering additional product information - Sharing relevant promotions or discounts - Answering comparison questions thoroughly - Following up if they go quiet ### 3. Monitor Cold Leads Conversations with scores below 40 are typically early-stage interactions. The AI chatbot handles these well on its own. However, you might: - Let the AI handle routine responses - Check periodically for any that might escalate - Use these conversations to identify common questions for your knowledge base ### 4. Combine with Status Filtering For the most effective workflow, combine lead scores with status filters: - Filter by **"Handed to Human"** status to see conversations waiting for human response, then prioritize by lead score. - Filter by **"Active"** status to monitor AI-handled conversations and take over high-scoring ones that might benefit from personal attention. > **Info:** Lead scores are updated dynamically as the conversation progresses. A cold lead can become a hot lead as the customer asks more product-specific questions. Check back regularly to see if scores have changed. ## Lead Score vs. Message Count The conversation list shows both the lead score and the message count. These provide complementary information: - **Lead score** reflects the **quality** of the interaction -- how likely the customer is to convert. - **Message count** reflects the **quantity** of interaction -- how many messages have been exchanged. A conversation with many messages but a low lead score might indicate a customer asking general or off-topic questions. A conversation with few messages but a high lead score might indicate a customer who immediately asked about a specific product's price and availability. ## Practical Example Consider these three conversations: | Customer | Messages | Lead Score | Analysis | |----------|----------|------------|----------| | Alice | 2 | 85 | Asked about a specific product's price and stock. Hot lead -- consider taking over to close the sale. | | Bob | 15 | 30 | Asked many general questions about your store, policies, and categories. Not yet focused on a specific purchase. Let the AI continue. | | Carol | 6 | 55 | Compared two products and asked about features. Warm lead -- may benefit from a personalized recommendation. | In this scenario, you would prioritize Alice first (highest score), then Carol (moderate score with comparison behavior), and let the AI continue handling Bob. > **Info:** Lead scoring works best when your product catalog is fully set up and the AI chatbot has been properly configured in Chat Studio. The more context the AI has about your products and business, the more accurately it can assess customer intent. --- Source: https://directsale.ai/help/chat-studio/index # Chat Studio Chat Studio configures and tests the customer-facing AI assistant. Its preview and settings work with the tenant's own product catalog, services and Knowledge Base. It is separate from Smart Help, which explains how to use the platform. ## Open and save settings Open Chat Studio from the dashboard navigation using a role with access. The preview and settings are shown side by side on larger screens. Save All persists changes; inspect the saved or error status before assuming a change is active. Test again after saving, preferably in a new conversation. ## Settings areas Use the [Settings Reference](https://directsale.ai/help/chat-studio/settings-reference) for the purpose, saving steps and tests for individual controls, including greeting modes, matching, visitor limits, voice and human handoff. | Area | What it controls | | --- | --- | | Business Profile | Business type, Introduce Your Business and greeting options. See the dedicated profile guide for save-time review. | | Personality | Assistant identity, tone, answer length and emoji preferences. | | Language | Response and product-information language settings. These differ from panel display language. | | Display | Product count, prices, stock presentation and supported matching/use-case options. | | Limits | Available visitor and conversation limits. These do not increase subscription quotas. | | Voice | Available speech-to-text and text-to-speech settings, subject to plan and provider support. | | Custom | Supported custom answers and fallback settings. Prepared trigger rules are managed in Auto Replies. | | Handoff & Store | Human handoff behavior and supported external-store context. | Exact controls depend on the active platform version, role and enabled features. Do not use an old guide's tab count or defaults to override the values currently shown in your account. ## Business introduction and greetings Describe the business and audience in [Business Profile](https://directsale.ai/help/chat-studio/business-profile), not provider identity or instructions to ignore rules. Choose an AI greeting or your explicit custom template. Save before testing. The storefront About text is a separate field; changing one does not automatically update the other. ## Product matching and presentation Configure how many products to show and whether prices/stock are included. Where enabled, matching strictness, related alternatives and use-case-aware matching affect which candidates the assistant considers. Product Usage Notes supplies factual use cases; it does not guarantee a match or replace documented specifications. Keep product facts and stock correct. If results are irrelevant, check catalog readiness, source data and the actual question before changing multiple settings at once. ## Language and currency Supported language controls cover all 18 platform languages. An automatic setting can follow the customer's language where offered. Do not assume panel language forces customer responses. An actual tenant-currency change resets business-language defaults but does not translate existing catalog text; see [General settings](https://directsale.ai/help/settings/general). ## Test safely Test a specific product, a need-based question, a business policy, an unavailable item and a human-support request. Use a new conversation when checking a greeting. Voice and attachment controls depend on browser permissions and supported formats. Chat Studio connects to the actual assistant; do not treat it as an isolated mock or assume its activity is free of applicable quotas. For prepared matching answers use [Auto Replies](https://directsale.ai/help/chat-studio/auto-replies). For policies, FAQs and longer reference material use [Knowledge Base](https://directsale.ai/help/chat-studio/knowledge-base). Channel reply switches still determine which incoming messages are eligible. ## Troubleshooting A failed Save All leaves the submitted changes unsaved. A business-profile review-required or unavailable message concerns the profile submission, not proof that every product or website field is prohibited. Keep your text and follow the displayed next step. Check plan access, connection state and handoff state when messages do not receive an AI response. --- Source: https://directsale.ai/help/chat-studio/business-profile # Business Profile and Greetings Open Chat Studio > Chatbot Settings > Business Profile. Choose the business type and fill Introduce Your Business with a plain-language explanation of the business, customers, products or services and how it helps them. The description supports up to 3,000 characters. It is separate from the storefront About page and Knowledge Base. ## Write useful business information Describe the actual business rather than the AI model: “We supply garden tools to homeowners and landscaping teams. We help customers compare documented specifications.” For services, describe services and audience instead of treating every conversation as a product purchase. Do not enter passwords, payment tokens, HTML, scripts, hidden instructions or requests to override the assistant's rules. Use the catalog for live product facts and the appropriate settings for operational policies. A profile does not authorize discounts, payments, private-data access or changes to other accounts. ## Save and review status Save All submits changed profile content for the configured business-profile review. Approved content can be saved; rejected content needs revision. Review required needs platform review. Unavailable means the review did not finish, not that a prohibited-content decision was made. Preserve text and follow the displayed next step or contact Support. Administrator approval does not activate a draft by itself; resave when instructed. If Save All fails, do not assume other fields in that request were saved. This separate business-profile check does not require Safeguard approval for every product or storefront edit. ## Configure the greeting Choose an available AI greeting style or an explicit custom template. Business information can guide an AI introduction; a custom template keeps your wording. Category and brand introduction controls select what to mention where enabled. Test a new conversation after saving so old conversation context does not obscure the result. ## Language and later edits The description's language does not replace response-language settings. Currency changes reset business-language defaults as described in Settings; manually adjust supported language settings afterwards if needed. Existing business text is not automatically translated. --- Source: https://directsale.ai/help/chat-studio/auto-replies # Auto Replies: Triggers, Messages, Links and Media **Dashboard > Auto Replies** stores prepared responses for matching customer messages. A prepared Auto Reply does not use the monthly AI-generated reply allowance; external messaging/provider fees and configured feature limits can still apply. ## Before you start Choose the customer question/trigger and write the actual reply. Decide which channel will receive it, whether a public Instagram comment is appropriate, and what links/media can be shared. Check the limits shown by the form for replies and each content type. ## Create a prepared reply 1. Select Add/New Auto Reply. 2. Enter a title, optional purpose/description, active status and priority. 3. Choose **Exact** or **Contains** matching and review **Case sensitive**. 4. Enter triggers one per line. Exact is for a complete matching input; Contains can match within a longer message, so avoid overly broad words. 5. Add at least one supported content item. 6. Save, reopen the item and test the trigger from your own customer account. If multiple triggers overlap, narrow them and test priority behavior rather than assuming a random reply will be selected. An inactive item is not available as an active response. ## Text, links and media | Area | How to configure | | --- | --- | | Text Messages | Add the prepared text entries and choose LTR/RTL direction for each | | Links | Supply URL, optional label and Text or Button display mode | | Media | Select the permitted image, video, audio or voice type; upload a file or choose from Media Library | | Instagram Public Comment Replies | Add concise public-safe text separate from private DM content | Use the counters shown in the form. A button/media item supported in one channel may need different delivery in another. Do not assume an Instagram comment can carry the same attachments as a private message. Remove private customer details from public-reply text. ## How it interacts with AI In supported **Answer all with AI** routes, configured Auto Replies are checked first. If no trigger matches, the normal AI path can answer. In **Auto Replies only**, only matching prepared triggers receive a response; an unmatched question is not automatically sent to AI. Configure Instagram DM, story and comment modes separately in [Messaging Channels](https://directsale.ai/help/channels/instagram-replies). Saving an Auto Reply does not turn on a disabled channel/reply type. ## Verify, edit and disable Test a matching message, a nonmatching message and an overlapping trigger. Check actual text, direction, links and media on the target channel. Edit and Save an existing item to update it. Deactivate to stop using it without deleting its content; use Delete only when you intend to remove it. ## Troubleshooting No response: check active status, trigger spelling, match type, case sensitivity, selected channel mode and channel connection. Wrong response: inspect overlapping triggers and priorities. Media failure: check file type, size, accessibility and channel support. Save rejected: read the exact plan/form limit and confirm title, trigger and content are present. Prepared replies are not generated factual answers: update them when prices, policies or opening hours change. See [Knowledge Base](https://directsale.ai/help/chat-studio/knowledge-base) for maintained factual articles. --- Source: https://directsale.ai/help/chat-studio/knowledge-base # Knowledge Base The **Knowledge Base** is a separate section in the dashboard where you manage the information your AI chatbot uses to answer customer questions beyond your product catalog. While the product catalog teaches the chatbot about your products, the knowledge base teaches it about your business policies, frequently asked questions, guides, and other custom content. ## Accessing the Knowledge Base Navigate to **Knowledge Base** in the dashboard sidebar. This is a standalone section, separate from Chat Studio, but they work together -- content you add to the knowledge base is automatically available to the AI chatbot. ## Knowledge Base Overview When you open the Knowledge Base page, you see: ### Stats Cards A row of statistics cards at the top showing: - **Total Items** -- The total number of knowledge base entries - **Breakdown by type** -- Individual counts for each content type (Articles, FAQs, Q&A, Policies, Guides) ### Filter Bar Below the stats, a filter bar lets you narrow down your content: - **Type filter buttons** -- Click to filter by content type: All, Articles, FAQs, Q&A, Policies - **Search input** -- Search knowledge base entries by title, content, or question text ### Content List The main area displays all knowledge base entries in a list format. Each entry shows: - **Content type icon** -- A visual indicator of the content type - **Title or question** -- The entry's title (for articles/policies/guides) or question (for FAQ/Q&A) - **Content type badge** -- A small label showing the content type - **Active/Inactive badge** -- Inactive entries are marked with a red "Inactive" badge - **Content preview** -- A two-line preview of the answer or content - **Category** -- The optional category label, if assigned - **Action buttons** -- Edit (pencil icon) and Delete (trash icon) ### Pagination If you have more than 10 entries, pagination controls appear at the bottom with Previous/Next buttons and a page counter. ## Content Types The knowledge base supports five types of content: | Type | Icon | Description | Required Fields | |------|------|-------------|-----------------| | **Article** | File icon | Long-form informational content about your business, industry, or processes | Title, Content | | **FAQ** | Question mark icon | Frequently asked questions with concise answers. Uses the Q&A format. | Question, Answer | | **Q&A (Custom QA)** | Message icon | Custom question-and-answer pairs for specific topics | Question, Answer | | **Policy** | Checkmark-file icon | Business policies such as return policies, shipping terms, privacy policies | Title, Content | | **Guide** | Bookmark icon | Step-by-step guides and instructional content | Title, Content | > **Info:** The difference between **FAQ** and **Q&A** is primarily organizational. FAQs are intended for common customer questions, while Custom Q&A entries are for more specific or niche questions. Both use the same question-and-answer format and work identically from the AI's perspective. ## Adding Knowledge Base Content 1. Click the **Add Content** button in the top-right corner of the Knowledge Base page. 2. A dialog (modal) opens with the following fields: ### For Articles, Policies, and Guides 3. Select the **Content Type** from the dropdown (Article, Policy, or Guide). 4. Enter a **Title** (required) -- A descriptive title for the content. 5. Enter the **Content** (required) -- The full text of the article, policy, or guide. Use the large text area for multi-paragraph content. 6. Optionally enter a **Category** -- A label to organize entries (e.g., "Shipping", "Returns", "Product Care"). 7. Set the **Priority** (1--10) -- Higher priority content is weighted more heavily by the AI. Default is 5. 8. Click **Add** to save. ### For FAQs and Q&A 3. Select the **Content Type** from the dropdown (FAQ or Custom QA). 4. Enter the **Question** (required) -- The question a customer might ask. 5. Enter the **Answer** (required) -- The response the AI should provide. 6. Optionally enter a **Category** to organize the entry. 7. Set the **Priority** (1--10). 8. Click **Add** to save. > **Warning:** For FAQ and Q&A types, both the Question and Answer fields are required. For Article, Policy, and Guide types, both the Title and Content fields are required. The form will show an alert if you try to save without filling in the required fields. ## Editing Knowledge Base Content 1. Find the entry you want to edit in the content list. 2. Click the **pencil icon** (Edit button) on the right side of the entry. 3. The edit dialog opens with all fields pre-filled with the current values. 4. Make your changes. 5. Click **Save Changes** to update the entry. You can change the content type of an existing entry during editing. The form fields will adjust accordingly (switching between title/content fields and question/answer fields). ## Deleting Knowledge Base Content 1. Find the entry you want to delete in the content list. 2. Click the **trash icon** (Delete button) on the right side of the entry. 3. A confirmation prompt appears. 4. Click **OK** to confirm the deletion. 5. The entry is permanently removed and the list refreshes. > **Warning:** Deletion is permanent and cannot be undone. Make sure you want to remove the entry before confirming. ## Searching and Filtering ### Filtering by Content Type 1. Click one of the filter buttons above the content list: - **All** -- Show all content types - **Articles** -- Show only articles - **FAQs** -- Show only FAQ entries - **Q&A** -- Show only custom Q&A entries - **Policies** -- Show only policy entries 2. The list reloads with only the selected type. The active filter button appears highlighted. 3. The page resets to page 1 when you change the filter. ### Searching 1. Type your search term in the **search input** on the right side of the filter bar. 2. The list filters to show entries matching your search query (matches against titles, questions, and content). 3. The page resets to page 1 when you search. 4. Clear the search field to show all entries again. ## Bulk Q&A Import The Knowledge Base API supports bulk importing Q&A entries. This is useful when you have a large list of frequently asked questions to add at once. Contact your development team or use the API endpoint directly: - **Endpoint**: `POST /knowledge-base/bulk-qa` - **Payload**: An array of objects, each with `question`, `answer`, and optionally `category` ## How the Knowledge Base Works with the Chatbot The knowledge base integrates directly with your AI chatbot: 1. When a customer asks a question, the AI searches both your **product catalog** and your **knowledge base** for relevant information. 2. Knowledge base entries with higher **priority** values are weighted more heavily in the AI's responses. 3. The AI uses the content to formulate natural, contextual responses -- it does not simply copy-paste entries. 4. **Active** entries are included in the AI's knowledge; **inactive** entries are excluded. 5. Categories help the AI organize and retrieve related content more effectively. > **Info:** For the best chatbot experience, we recommend adding at least these types of knowledge base content: your return/refund policy, shipping information, payment methods, business hours, and answers to the 10--20 most common questions your customers ask. ## Best Practices 1. **Keep answers concise and factual** -- The AI works best with clear, direct information. Avoid overly verbose entries. 2. **Use categories consistently** -- Group related entries under the same category (e.g., "Shipping", "Returns", "Payment") so the AI can find related information quickly. 3. **Set priorities thoughtfully** -- Give higher priority (7--10) to critical business information like return policies and payment methods. Use medium priority (4--6) for general information. Reserve low priority (1--3) for supplementary content. 4. **Update regularly** -- Keep your knowledge base current with your latest policies, promotions, and business information. 5. **Test after adding content** -- After adding or updating knowledge base entries, go to Chat Studio and test by asking the chatbot questions related to your new content. Verify that the responses are accurate and helpful. 6. **Use Q&A format for specific questions** -- If there is a question customers ask verbatim, add it as a FAQ or Q&A entry with the exact wording. This helps the AI match the question more precisely. 7. **Use Articles for detailed topics** -- For complex topics that require paragraphs of explanation, use the Article type. This gives the AI more context to work with. --- Source: https://directsale.ai/help/chat-studio/settings-reference # Chat Studio Settings: Behavior, Products, Voice and Handoff Open **Dashboard > Chat Studio**. Configure the customer-facing assistant in the settings area and test it in the adjacent chat. This is separate from the Smart Help assistant that teaches you how to use the dashboard. ## Before you start Use a role with settings access, prepare accurate products/services and Knowledge Base entries, and review the current plan's AI and voice allowances. Save settings before testing. Changing a control in the form does not necessarily change the active chatbot until the server confirms the save. ## Identity and response style 1. Complete [Business Profile and Greetings](https://directsale.ai/help/chat-studio/business-profile). 2. Set **Bot name**, **Tone**, **Use emojis** and **Response length**. 3. Choose a greeting mode: AI Generated, Short, Guided or Custom Template. 4. For a custom template, use only the placeholders offered by the UI. A template is not code. Check the rendered greeting rather than assuming a placeholder was expanded. 5. Where category/brand hints are available, choose Off, Auto from catalog or Select manually and set the maximum entries. These hints do not add products to your catalog. 6. Save and test a new greeting as well as a normal follow-up. Short and guided greetings can use the business profile when one is configured. Do not promise your assistant sells products when your business supplies only services. ## Language controls **Response language** controls customer replies; Auto allows supported language detection. **Product language** controls catalog language selection and is not a request to translate all saved products. The dashboard display language is separate. An actual tenant currency change resets configured business-language defaults; later manual changes last until the next currency change. See [General Settings](https://directsale.ai/help/settings/general). Test an explicit language request and a question in the desired language before going live. ## Product matching and presentation | Control | Purpose | | --- | --- | | Maximum products to show | Limits the shortlist presented in a response, not total catalog size | | Fill product slots with suggestions | Permits supplementary suggestions where supported; review their relevance | | Show related alternatives | Allows related alternatives rather than implying they are exact matches | | Use-case-aware matching | Uses product use cases to improve matching; maintain Product Usage Notes | | Include prices / Include stock | Controls those details in responses, not the stored price or inventory | | Show product cards | Enables supported product cards; some messaging channels render simpler content | | Show action buttons | Enables supported actions; it does not grant extra backend permissions | | Maximum quantity per item | Sets a per-item limit; zero means no configured limit at this control | | Widget daily message limit per visitor | A visitor-level limit separate from the account's monthly AI reply allowance | | Off-catalog question limit | Limits off-topic/off-catalog interaction; it does not add missing business facts | Save, then test an exact SKU, a need-based request and an item that does not exist. If matching is poor, correct catalog facts, language, stock/visibility and Usage Notes before repeatedly changing tone. Increasing the number of cards does not repair missing product data. ## Voice Enable **Voice input** for supported incoming audio and **Voice output** for generated speech. Review **Auto voice reply** and the voice-reply mode: Voice only, Always or Never. These controls must be considered together; an enabled switch is not proof that every channel supports audio. Test a short audio message and a text question. Incoming transcription uses STT minutes; generated speech uses TTS minutes. Browser microphone permission, channel support, provider availability and plan allowances can all affect the result. Do not enable automatic audio without testing what customers receive. ## Human handoff and fallback 1. Set the **Fallback message** for cases where a useful response cannot be produced. 2. Enable **Human handoff** if staff will handle requests for a person. 3. Decide whether customers may request that the bot resume after requesting a human. 4. If automatic resume after a human request is enabled, set the delay in minutes. 5. Save and test a handoff with your own account. Confirm its state in **Conversations**, and configure staff notifications separately. 6. Verify that the assistant stays paused or resumes according to the selected policy. Taking over a conversation, the customer's request for a human, and a timed return to AI are different events. See [Managing Conversations](https://directsale.ai/help/conversations/managing-conversations). A fallback message must not promise an order or payment completed. ## Custom Q&A and store integration Add and edit custom question/answer entries in the area offered by Chat Studio, then save. Use [Knowledge Base](https://directsale.ai/help/chat-studio/knowledge-base) for maintained articles/FAQs and [Auto Replies](https://directsale.ai/help/chat-studio/auto-replies) for prepared trigger-based messages; these are not interchangeable. If using store-platform/base-URL controls, choose the actual platform and full storefront URL. Setting a URL does not authorize an external store API; use [Connections](https://directsale.ai/help/multichannel/connecting-channels) and [Checkout](https://directsale.ai/help/settings/checkout) for those integrations. ## Verification and troubleshooting After Save, reload settings to verify persistence. Test greeting, factual answer, missing product, voice and human handoff separately. If save fails, retain the draft and read the error: Business Profile review unavailable is not a completed policy rejection. If behavior does not change, confirm the tenant, saved settings, connected channel and a fresh test conversation. Never paste secrets into a test chat. --- Source: https://directsale.ai/help/services/index # Services & Appointments DirectSale includes a full-featured **service booking system** that lets you offer bookable services alongside (or instead of) physical products. Whether you run a consulting firm, a salon, a tutoring business, or any appointment-based operation, the Services module has you covered. ## What Are Services? A **service** is a bookable offering that your customers can schedule. Each service has: - A **name** and **description** displayed in your storefront - A **duration** (in minutes) that determines how long each appointment lasts - A **price** (with optional sale pricing and deposit requirements) - A **location type** -- in-person, online, or both - One or more **providers** (team members who deliver the service) - A **schedule** that controls when the service is available for booking > **Info:** Services and products are separate modules. You can use one, the other, or both. Many businesses offer a combination -- for example, a hair salon might sell hair care products alongside styling services. ## Key Features ### Service Management - Create and edit services with detailed descriptions, images, and SEO metadata - Set base and sale prices with flexible deposit options (none, percentage, or fixed amount) - Assign services to categories for easy organization - Control visibility with active/inactive toggles and featured flags - Create service providers without giving them dashboard accounts - Assign one or more providers to each service ### Schedule & Availability - Set weekly availability schedules per provider (day-by-day start/end times) - Configure break times within each working day - Add schedule overrides for holidays, special events, or custom hours - Buffer time before and after appointments to prevent back-to-back bookings ### Appointment Management - View all appointments in a filterable table - Track appointment statuses: Pending, Confirmed, Completed, Cancelled, No-Show - Filter by date range, status, service, or provider - Confirm, complete, or cancel appointments with optional cancellation reasons - See at-a-glance statistics: today's appointments, pending count, and this week's total ## Navigation The Services section in the dashboard is organized into these pages: | Page | Path | Description | |------|------|-------------| | **Services** | `/dashboard/services` | List, search, filter, toggle, and delete services | | **Add Service** | `/dashboard/services/add` | Create a new service with all configuration options | | **Edit Service** | `/dashboard/services/[id]` | Modify an existing service | | **Providers** | `/dashboard/services/providers` | Create providers and assign their services | | **Schedules** | `/dashboard/services/schedules` | Manage weekly schedules and overrides per provider | | **Job Requests** | `/dashboard/services/requests` | Review request-based work and schedule visits | | **Appointments** | `/dashboard/appointments` | View and manage all customer bookings | ## Who Can Access Services? Access to the Services section depends on your team role: | Role | Access Level | |------|-------------| | **Owner** | Full access to all service features | | **Admin** | Full access to all service features | | **Manager** | Full access to services and appointments | | **Operator** | Can view appointments only | | **Accountant** | No access | | **Viewer** | No access | > **Info:** To learn more about roles and what each one can do, see the [Roles & Permissions](https://directsale.ai/help/team/roles-permissions) page. ## Getting Started Ready to set up your first service? Follow these steps: 1. **[Create a service](https://directsale.ai/help/services/creating-services)** -- Define the service, pricing and booking method 2. **[Add providers](https://directsale.ai/help/services/providers)** -- Create the people who deliver the service 3. **[Set up schedules](https://directsale.ai/help/services/schedules)** -- Configure when each provider is available 4. **[Manage appointments](https://directsale.ai/help/services/appointments)** or **[job requests](https://directsale.ai/help/services/requests)** -- Process customer bookings and work --- Source: https://directsale.ai/help/services/creating-services # Creating and Editing Services ## AI description length and missing facts The service AI assistant and service SEO + AI text previews require **900–1500 words** in the main description, targeting about 1200. The preview shows the word count and range status. Short descriptions, SEO title, meta description, separate FAQs and image suggestions are not counted. Existing writing style, plain-text format and page layout remain. If owner-approved facts cannot support a useful, accurate description, the panel requests additional information instead of padding with guesses or repetition. In the service assistant, these questions appear in the existing interview form; answer them before generating again. In the section editor, add verified answers to the brief and request fresh suggestions. Length corrections do not spend additional final-draft credits. Failed generation does not apply the preview and refunds the reserved final-draft credit. This guide covers how to create a new service and how to edit an existing one. Both the "Add Service" and "Edit Service" pages share the same form layout, organized into clearly labeled sections. ## Creating a New Service 1. Navigate to **Dashboard > Services**. 2. Click the **"Add Service"** button in the top-right corner. 3. Fill out the form sections described below. 4. Click **"Create Service"** at the bottom to save. ## Editing an Existing Service 1. Navigate to **Dashboard > Services**. 2. Find the service you want to edit in the table. 3. Click the three-dot menu (actions) on the right side of the service row. 4. Select **"Edit"**. 5. Modify any fields as needed. 6. Click **"Save Changes"** at the bottom. --- ## Form Sections ### 1. Basic Information This section captures the core details of your service. | Field | Required | Description | |-------|----------|-------------| | **Service Name** | Yes | The name of the service as displayed to customers. Keep it clear and descriptive. | | **Short Description** | No | A brief summary (up to 500 characters) shown in service listings and previews. | | **Full Description** | No | A detailed description of the service. Explain what the service includes, what customers should expect, and any preparation steps. | > **Info:** The service name is the only required field in this section. However, adding descriptions significantly helps customers understand what they are booking. ### 2. Timing Configure how long the service takes and add buffer time around each appointment. | Field | Required | Default | Description | |-------|----------|---------|-------------| | **Duration** | Yes | 30 min | The length of the service session in minutes. Must be at least 1 minute. | | **Buffer Before** | No | 0 min | Extra time blocked before each appointment (e.g., for room preparation). | | **Buffer After** | No | 0 min | Extra time blocked after each appointment (e.g., for cleanup). | > **Info:** Buffer times prevent back-to-back bookings. For example, a 60-minute service with 10 minutes of buffer before and after will block a total of 80 minutes in the schedule, but customers only see the 60-minute duration. ### Booking Method Choose how customers arrange the service: - **Instant booking from available times** lets customers reserve a free provider slot. You can add up to 12 timing options with separate names, durations, prices and flexible, morning, afternoon or full-day windows. Without options, the main duration and price apply. - **Job request; schedule after review** collects the customer's description, address and preferred date without reserving time. Choose whether the estimate is per job, day or week. Staff review the request and create one or more visits later. Use instant booking when duration and price are known in advance. Use request mode when inspection, travel, scope or multi-day scheduling must be agreed first. See [Job Requests and Visits](https://directsale.ai/help/services/requests). ### 3. Pricing Set the cost of your service and configure deposit requirements. | Field | Required | Default | Description | |-------|----------|---------|-------------| | **Base Price** | Yes | 0 | The regular price of the service. | | **Sale Price** | No | -- | An optional discounted price. When set, the original price appears with a strikethrough. | | **Deposit Type** | No | None | Whether a deposit is required at booking time. Options: **None**, **Percentage**, **Fixed Amount**. | | **Deposit Amount** | Conditional | 0 | Required when deposit type is Percentage or Fixed. Enter the percentage or fixed amount. | **Deposit Type Options:** - **None** -- No deposit is required. The customer pays the full amount at the time of the appointment. - **Percentage** -- The customer pays a percentage of the total price upfront when booking. For example, setting 25% on a $100 service requires a $25 deposit. - **Fixed Amount** -- The customer pays a fixed amount upfront when booking, regardless of the service price. ### 4. Location Define where the service takes place. | Field | Required | Description | |-------|----------|-------------| | **Location Type** | Yes | Choose from **In-Person**, **Online**, or **Both**. | | **Address** | Conditional | Physical address where the service is delivered. Shown when location type is In-Person or Both. | | **Online Link** | Conditional | URL for the online meeting (e.g., Zoom, Google Meet). Shown when location type is Online or Both. | **Location Type Options:** - **In-Person** -- The service is delivered at a physical location. Enter the address so customers know where to go. - **Online** -- The service is delivered via video call. Provide the meeting link. - **Both** -- The service is available both in-person and online. Both the address and online link fields appear. ### 5. Capacity | Field | Required | Default | Description | |-------|----------|---------|-------------| | **Max Capacity Per Slot** | No | 1 | The maximum number of customers who can book the same time slot. Set to 1 for one-on-one services (e.g., private consultations). Set higher for group services (e.g., a yoga class with 20 spots). | > **Info:** When max capacity is greater than 1, multiple customers can book the same time slot until the capacity is reached. This is ideal for classes, workshops, and group sessions. ### 6. Image | Field | Required | Description | |-------|----------|-------------| | **Image URL** | No | A URL pointing to an image that represents the service. This image appears in the service listing on the dashboard and storefront. A preview is shown below the field. | ### 7. SEO (Search Engine Optimization) Optimize how your service appears in search engine results. | Field | Required | Max Length | Description | |-------|----------|-----------|-------------| | **SEO Title** | No | 70 characters | The title that appears in search engine results. A character counter helps you stay within limits. | | **SEO Description** | No | 160 characters | The meta description for search results. A character counter helps you stay within limits. | > **Info:** If you leave the SEO fields empty, the service name and short description are typically used as fallbacks by search engines. ### 8. Category Organize your services by assigning them to categories. | Field | Required | Description | |-------|----------|-------------| | **Service Category** | No | Select an existing category or choose "No Category". | | **Create Category** | -- | Click the "Create Category" button to quickly add a new category without leaving the page. | Categories help customers browse and filter services on your storefront. They also power the category filter on the services list page. ### 9. Service Providers Assign service providers who can deliver this service. Providers are managed separately from dashboard team accounts. - A list of **active service providers** is displayed as checkboxes. - Check the box next to each provider who delivers this service. - Each provider can have their own contact details, service assignments and schedule. - A counter shows how many providers are currently selected. > **Info:** Only active providers are shown. Create them in [Service Providers](https://directsale.ai/help/services/providers). Creating a provider does not create a dashboard login or grant panel access. ### 10. Status | Field | Default | Description | |-------|---------|-------------| | **Active** | Checked | When active, the service is visible and bookable. Deactivating a service hides it from customers but preserves all data. | | **Featured** | Unchecked | Featured services are highlighted in your storefront, making them more prominent to potential customers. | --- ## Deleting a Service 1. Navigate to **Dashboard > Services**. 2. Click the three-dot menu on the service row. 3. Select **"Delete"**. 4. Confirm the deletion in the dialog that appears. > **Warning:** Deleting a service is permanent and cannot be undone. Any existing appointments associated with the service will be affected. Consider deactivating the service instead if you want to preserve historical data. ## Toggling Service Status You can quickly enable or disable a service directly from the services list: 1. Navigate to **Dashboard > Services**. 2. Find the service in the table. 3. Click the toggle switch in the **Active** column. The change takes effect immediately. Inactive services are hidden from customers but remain in your dashboard for reference. ## Searching and Filtering Services The services list page provides two filtering options: - **Search** -- Type in the search box to filter services by name. Results update as you type. - **Category Filter** -- Use the category dropdown to show only services in a specific category. Select "All Categories" to remove the filter. You can also create a new category directly from the filter bar by clicking the "+" button next to the category dropdown. ## AI description, SEO and service page The **Service AI assistant** can generate an editable description, SEO, FAQ and image ideas directly from the service details already entered. The interview and separate keyword suggestion are optional. Each question round, keyword suggestion, final draft and image generation uses the allowance shown in the editor; an unsuccessful final draft that needs more facts refunds its reserved text credit. 1. Enter the service name, choose the content language and review existing descriptions, FAQs and booking facts. 2. Optionally use the interview to add more verified details, or request keyword suggestions and review URL conflicts and Search Console evidence where available. 3. Select **Generate full service copy with SEO + AI (beta)**. A prior interview or primary keyword is not required; if none is set, the draft proposes one. If the existing facts cannot support useful copy, answer the specific questions shown and generate again. 4. Inspect every claim, price, location, proposed keyword and expectation before applying the draft. 5. Generate or approve images only after checking the preview and available image allowance. Applying AI output updates the service form; it does not save the service automatically. Review the fields and select **Create Service** or **Save Changes**. The service page composer keeps the cover and booking widget above the editable sections. Use templates or individual sections for the rest of the page, adjust page appearance, and use undo/redo while editing. A plan can limit the number of services with saved custom page layouts. Saving an attractive layout does not correct inaccurate service facts, availability or pricing, so verify the public page after publication. --- Source: https://directsale.ai/help/services/providers # Service Providers Use **Dashboard > Services > Providers** to create the people who deliver services. A provider is separate from a dashboard team account: they do not need a panel login and receive no panel permission merely because they are listed as a provider. ## Add or edit a provider 1. Select **Add provider**. 2. Enter the display name. Phone, email and a description or specialty are optional. 3. Select the services this person can deliver. 4. Keep **Active** enabled and save. Use **Edit** to change details or service assignments. A provider can be assigned to several services, and a service can have several providers. Create the service first if the assignment list is empty. ## Set working hours Select **Working hours** on the provider card, or open **Services > Schedules** and choose the provider. Configure weekly availability, breaks and date overrides. Booking availability is calculated from the selected provider's schedule, existing bookings and the service's buffers and timing options. ## Deactivate a provider Deactivation removes the provider from new booking availability but does not cancel existing appointments or delete history. Review future appointments before deactivating a provider and reassign or cancel them as needed. Provider contact details are operational information. They are not a dashboard username, invitation or customer-facing login. Use [Team Management](https://directsale.ai/help/team/index) when a person needs access to the tenant panel. --- Source: https://directsale.ai/help/services/schedules # Schedules & Availability The Schedules page lets you manage the weekly availability for each service provider on your team. By setting working hours, break times, and schedule overrides, you control exactly when customers can book appointments. ## Accessing the Schedules Page 1. Navigate to **Dashboard > Services**. 2. Click on the **"Schedules"** tab in the services navigation (or go directly to `/dashboard/services/schedules`). ## Selecting a Provider Before you can configure a schedule, you must select a team member (provider) from the dropdown at the top of the page. 1. Use the **"Select Provider"** dropdown to choose a team member. 2. The weekly schedule and any existing overrides for that provider will load automatically. > **Info:** If no team members appear in the dropdown, you need to invite team members first. Visit the [Team Management](https://directsale.ai/help/team/index) section to add members to your account. --- ## Weekly Schedule The weekly schedule grid lets you define regular working hours for each day of the week (Sunday through Saturday). ### Schedule Grid Columns | Column | Description | |--------|-------------| | **Day** | The day of the week (Sunday through Saturday). | | **Available** | Checkbox to mark whether the provider works on this day. | | **Start Time** | The time the provider begins accepting appointments. | | **End Time** | The time the provider stops accepting appointments. | | **Break Start** | Optional. The start of a break period during the day. | | **Break End** | Optional. The end of a break period during the day. | ### Default Schedule When a provider has no saved schedule, the system provides a sensible default: - **Monday through Friday**: Available, 9:00 AM to 5:00 PM - **Saturday and Sunday**: Not available ### Configuring the Weekly Schedule 1. **Select a provider** from the dropdown. 2. For each day of the week: - Check or uncheck the **Available** checkbox to toggle that day on or off. - Set the **Start Time** and **End Time** for the working period. - Optionally set **Break Start** and **Break End** to define a break (e.g., a lunch break from 12:00 to 13:00). 3. Click **"Save Schedule"** to persist your changes. > **Info:** Time inputs disabled when a day is marked as unavailable. You only need to set times for days that are checked as available. ### Example Configurations **Standard office hours (Mon-Fri, 9-5):** | Day | Available | Start | End | Break Start | Break End | |-----|-----------|-------|-----|-------------|-----------| | Sunday | No | -- | -- | -- | -- | | Monday | Yes | 09:00 | 17:00 | 12:00 | 13:00 | | Tuesday | Yes | 09:00 | 17:00 | 12:00 | 13:00 | | Wednesday | Yes | 09:00 | 17:00 | 12:00 | 13:00 | | Thursday | Yes | 09:00 | 17:00 | 12:00 | 13:00 | | Friday | Yes | 09:00 | 17:00 | 12:00 | 13:00 | | Saturday | No | -- | -- | -- | -- | **Evening and weekend schedule:** | Day | Available | Start | End | Break Start | Break End | |-----|-----------|-------|-----|-------------|-----------| | Sunday | No | -- | -- | -- | -- | | Monday | No | -- | -- | -- | -- | | Tuesday | Yes | 17:00 | 21:00 | | | | Wednesday | Yes | 17:00 | 21:00 | | | | Thursday | Yes | 17:00 | 21:00 | | | | Friday | Yes | 17:00 | 21:00 | | | | Saturday | Yes | 10:00 | 18:00 | 13:00 | 14:00 | --- ## Schedule Overrides Overrides let you modify a provider's availability on specific dates. Use overrides for holidays, vacations, special events, or any day that deviates from the regular weekly schedule. ### Types of Overrides 1. **Day Off** -- The provider is completely unavailable on the specified date, regardless of the weekly schedule. 2. **Custom Hours** -- The provider is available on the specified date, but with different hours than their regular schedule. ### Adding a Schedule Override 1. Select a provider from the dropdown (their schedule and overrides will load). 2. Click the **"Add Override"** button in the Schedule Overrides section. 3. In the dialog that opens: - **Date** -- Select the date for the override. - **Whole Day Off** -- Check this box if the provider should be completely unavailable on this date. - **Custom Hours** -- If "Whole Day Off" is unchecked, set the **Start Time** and **End Time** for the special hours. - **Reason** (optional) -- Enter a reason for the override (e.g., "National Holiday", "Team Building Day", "Doctor's appointment"). 4. Click **"Add Override"** to save. ### Viewing Overrides Existing overrides are displayed as a list below the weekly schedule. Each override shows: - The **date** of the override - The **reason** (if one was provided) - A badge indicating either **"Unavailable"** (day off) or the **custom hours** (e.g., "10:00 - 14:00") ### Deleting an Override To remove a schedule override: 1. Find the override in the list. 2. Click the red **trash icon** on the right side. 3. The override is deleted immediately. > **Info:** Overrides take priority over the weekly schedule. If a provider is set as available on Mondays in their weekly schedule, but has a "Whole Day Off" override on a specific Monday, they will be unavailable for that date only. All other Mondays remain available. --- ## How Schedules Affect Bookings The schedule system directly controls which time slots are available for customer booking: 1. The **weekly schedule** defines the baseline availability for each day of the week. 2. **Break times** are excluded from bookable slots. 3. **Schedule overrides** modify or disable availability on specific dates. 4. **Buffer times** (configured per service) are factored in -- a 60-minute service with 10 minutes of buffer before and after requires an 80-minute open window. 5. **Max capacity** determines how many customers can book the same slot. > **Info:** Each provider has their own independent schedule. If a service has multiple providers, the available time slots shown to customers are the union of all assigned providers' schedules. ## Best Practices - **Set break times** to prevent burnout and allow for preparation between appointments. - **Add overrides in advance** for known holidays and vacation days so customers cannot book those dates. - **Review schedules regularly** to ensure they match each provider's actual availability. - **Use buffer times on services** to account for transition time between appointments, rather than building padding into the schedule itself. --- Source: https://directsale.ai/help/services/appointments # Managing Appointments The Appointments page provides a centralized view of all customer bookings for your services. From here you can monitor, filter, confirm, complete, and cancel appointments. ## Bookings on a self-hosted website The service catalog and public provider details are published to the VPS. Live availability, appointment booking and service work requests still use the central scheduler. A locally visible service page does not mean bookings can complete during a platform outage. Configure schedules centrally, test the public booking flow and check the resulting appointment here. New scheduler-bridge support on an older VPS requires a website application update, followed by successful publication. ## Accessing Appointments Navigate to **Dashboard > Appointments** (available from the sidebar under the Services group). The page is located at `/dashboard/appointments`. --- ## Appointments Overview At the top of the page, you will see three summary statistics cards: | Stat | Description | |------|-------------| | **Today's Appointments** | The number of appointments scheduled for today. | | **Pending** | The total number of appointments awaiting confirmation. | | **Upcoming This Week** | The number of appointments scheduled for the current week. | These cards update automatically as you take actions on appointments. --- ## Filtering Appointments A filter bar below the stats cards lets you narrow down the appointments list. You can combine multiple filters at once. ### Available Filters | Filter | Description | |--------|-------------| | **Date Range** | Select a "from" and "to" date to show appointments within a specific period. | | **Status** | Filter by appointment status: All, Pending, Confirmed, Completed, Cancelled, or No-Show. | | **Service** | Filter by a specific service to see only appointments for that service. | | **Provider** | Filter by a specific team member to see only their appointments. | ### Clearing Filters When any filter is active, a **"Clear"** button appears. Click it to reset all filters and return to the unfiltered view. --- ## Appointment Statuses Each appointment goes through a lifecycle represented by its status: | Status | Color | Description | |--------|-------|-------------| | **Pending** | Yellow | The appointment has been booked but not yet confirmed by staff. | | **Confirmed** | Blue | A team member has confirmed the appointment. | | **Completed** | Green | The appointment has taken place successfully. | | **Cancelled** | Red | The appointment was cancelled (by the customer or staff). | | **No-Show** | Gray | The customer did not show up for the confirmed appointment. | ### Status Transitions The following diagram shows the allowed status transitions: ``` Pending -----> Confirmed -----> Completed | | | +-----> No-Show | | +---+ +-----> Cancelled | +----------> Completed | +----------> Cancelled ``` - **Pending** can be moved to: Confirmed, Completed, or Cancelled - **Confirmed** can be moved to: Completed, No-Show, or Cancelled - **Completed**, **Cancelled**, and **No-Show** are terminal statuses (no further transitions) --- ## Appointments Table The main section of the page displays appointments in a table with the following columns: | Column | Description | |--------|-------------| | **Customer** | The customer's name and phone number (if available). Shows "Guest" if no name was provided. | | **Service** | The name of the booked service. | | **Provider** | The team member assigned to deliver the service. Shows "-" if no provider is assigned. | | **Date/Time** | The scheduled start time of the appointment, formatted according to your locale settings. | | **Status** | The current status badge (color-coded). | | **Amount** | The total price of the appointment, formatted in your store's currency. Shows "-" if no amount is set. | | **Actions** | Action buttons to change the appointment status (see below). | --- ## Taking Actions on Appointments The actions available depend on the current status of the appointment. ### Confirm an Appointment Available when status is **Pending**. 1. Click the blue **checkmark** button in the Actions column. 2. The status changes to **Confirmed** immediately. ### Complete an Appointment Available when status is **Pending** or **Confirmed**. 1. Click the green **person-check** button in the Actions column. 2. The status changes to **Completed** immediately. ### Cancel an Appointment Available when status is **Pending** or **Confirmed**. 1. Click the red **X-circle** button in the Actions column. 2. A cancellation dialog opens. 3. Optionally enter a **cancellation reason** (this is recorded for reference). 4. Click **"Cancel Appointment"** to confirm, or **"Keep Appointment"** to go back. ### Mark as No-Show Available when status is **Confirmed**. 1. Click the gray **ban** button in the Actions column. 2. The status changes to **No-Show** immediately. > **Info:** Action buttons are only visible to users with management permissions (Owner, Admin, Manager, Operator). Users with the **Viewer** or **Accountant** role see a "-" in the Actions column and cannot modify appointment statuses. --- ## Pagination Appointments are displayed 10 per page. When you have more than 10 appointments: 1. Use the **left arrow** and **right arrow** buttons at the bottom to navigate between pages. 2. The current page number and total pages are shown between the navigation buttons. --- ## Best Practices - **Confirm appointments promptly** to let customers know their booking is secured. - **Use the date range filter** to review upcoming appointments for the day or week. - **Track no-shows** to identify patterns and consider implementing deposit requirements on services with high no-show rates. - **Add cancellation reasons** when cancelling appointments to maintain a clear record for later review. - **Filter by provider** to review individual team members' workloads and appointment volumes. > **Info:** Appointments are created automatically when customers book services through your storefront or booking page. You manage them from this dashboard page -- there is no manual appointment creation from the dashboard. --- Source: https://directsale.ai/help/services/requests # Job Requests and Visits Services can use **Instant booking from available times** or **Job request; schedule after review**. Request mode is useful for installation, repair, cleaning and multi-day work where staff must inspect the request before agreeing on timing or final price. ## Configure request mode 1. Open the service editor. 2. Under **Booking method**, select **Job request; schedule after review**. 3. Choose the estimate unit: per job, day or week, and enter the estimated amount. 4. Assign at least one provider and save the service. Customers submit their contact details, job description, address and preferred date. This creates a request; it does not reserve calendar time and is not a confirmed appointment. ## Process requests Open **Dashboard > Services > Job requests**. Each card shows the service, customer details, preferred date and request description. 1. Contact the customer and verify the scope, location, timing and price. 2. Move the status through **New**, **Contacted**, **Scheduled** and **Closed** as work progresses. 3. Record staff-only information in **Internal note** and save. 4. Add a visit only after the time has been agreed. ## Schedule visits Choose an assigned provider, start and end time, and optionally the agreed price for that visit. Times use the store's booking timezone. Availability and conflicts are checked before the visit is created. For multi-day work, create one visit for each day. A request can therefore have several visits and providers over its lifetime. Review the created visits and normal appointments before changing a provider's schedule. Owners, admins, managers and operators can manage requests. Treat customer contact, address and job details as private data and include only information needed to deliver the service. --- Source: https://directsale.ai/help/team/index # Team Management DirectSale allows you to invite team members to help manage your business. Each team member gets their own login credentials and can access different parts of the dashboard based on their assigned role. ## Overview The Team page provides a centralized view of all team members on your account. From here you can: - **View the account owner** and all invited team members - **Invite new members** via email - **Assign and change roles** to control what each person can access - **Activate or deactivate** team members - **Remove team members** entirely - **Resend invitations** if a member has not accepted yet - **Track member status** (active, invited, or inactive) - **Monitor last login** dates ## Accessing the Team Page Navigate to **Dashboard > Team** (located under the Account section in the sidebar, or go directly to `/dashboard/team`). --- ## Team Page Layout ### Account Owner At the top of the page, a card displays the **account owner's** information, including the store name and email address. The owner always has full access to all features and cannot be removed or have their role changed. ### Members List Below the owner card, all invited team members are listed as individual cards. Each card shows: | Information | Description | |-------------|-------------| | **Display Name** | The name of the team member. | | **Email** | The email address used for login. | | **Role** | A color-coded badge showing the member's role (Admin, Manager, Operator, Viewer). | | **Status** | A color-coded badge showing whether the member is Active, Invited, or Inactive. | | **Last Login** | The date of the member's most recent login (shown on larger screens). | | **Actions Menu** | A three-dot menu with management options (visible only to Owner and Admin). | ### Plan Limit Your subscription plan determines how many team members you can have. The current count is displayed next to the "Invite Member" button (e.g., "2 / 5"). When you reach your plan limit: - The "Invite Member" button becomes disabled - A warning banner appears at the bottom of the page - You need to upgrade your plan to add more members --- ## Member Statuses | Status | Color | Description | |--------|-------|-------------| | **Active** | Green | The member has accepted their invitation and can log in. | | **Invited** | Yellow | An invitation has been sent but not yet accepted. | | **Inactive** | Red | The member's account has been deactivated by an owner or admin. | --- ## Managing Team Members ### Changing a Member's Role 1. Click the **three-dot menu** on the member's card. 2. Select one of the available role options (e.g., "Change to Admin", "Change to Operator"). 3. The role updates immediately. > **Info:** You can only change roles to: Admin, Manager, Operator, or Viewer. The Owner role is unique to the account creator. You cannot assign the Accountant role from this menu -- it must be set during the invitation. ### Deactivating / Activating a Member 1. Click the **three-dot menu** on the member's card. 2. Click **"Deactivate"** (or **"Activate"** if currently inactive). 3. Deactivated members cannot log in but their data is preserved. ### Removing a Member 1. Click the **three-dot menu** on the member's card. 2. Click **"Remove"**. 3. Confirm the action in the confirmation dialog. > **Warning:** Removing a team member is permanent. Their account and login credentials are deleted. If they need access again, you will need to send a new invitation. ### Resending an Invitation If a team member has not accepted their invitation (status is "Invited"): 1. Click the **three-dot menu** on the member's card. 2. Click **"Resend Invitation"**. 3. A new invitation email is sent to the member. --- ## Who Can Manage the Team? Only users with the **Owner** or **Admin** role can manage the team. This includes: - Inviting new members - Changing roles - Activating/deactivating members - Removing members - Resending invitations Users with other roles (Manager, Accountant, Operator, Viewer) can see the team page but cannot perform any management actions. The "Invite Member" button and action menus are hidden from them. --- ## Next Steps - **[Inviting Members](https://directsale.ai/help/team/inviting-members)** -- Learn how to send invitations step by step. - **[Roles & Permissions](https://directsale.ai/help/team/roles-permissions)** -- Understand what each role can access and the full permissions matrix. --- Source: https://directsale.ai/help/team/inviting-members # Inviting Team Members This guide walks you through the complete process of inviting a new team member to your DirectSale account. ## Prerequisites Before you can invite a team member: - You must be logged in as the **Owner** or an **Admin**. - Your plan must have available member slots (check the counter next to the "Invite Member" button). --- ## Step-by-Step: Sending an Invitation ### Step 1: Open the Invite Dialog 1. Navigate to **Dashboard > Team**. 2. Click the **"Invite Member"** button in the top-right corner. 3. The invitation dialog will open. > **Info:** If the "Invite Member" button is disabled, you have reached your plan's team member limit. Upgrade your plan to invite more members. ### Step 2: Enter the Member's Email In the **Email** field, enter the email address of the person you want to invite. - This email will be used as their login credential. - An invitation link will be sent to this address. - The email must be a valid email address that is not already associated with another team member on your account. ### Step 3: Enter a Display Name In the **Display Name** field, enter the name of the team member. - This name is shown throughout the dashboard (in team lists, activity logs, operator info, etc.). - The minimum length is 2 characters. - The member can change their display name later. ### Step 4: Select a Role Choose a role for the new team member. The role determines what they can access in the dashboard. The available roles are presented as radio buttons with descriptions: | Role | Description | |------|-------------| | **Admin** | Full access except account deletion. Can manage team, products, orders, settings, and everything else. | | **Manager** | Access to conversations, products, orders, analytics, services, shipping, and related operational features. | | **Operator** | Access to conversations, orders, media, shipping, and appointments. Focused on day-to-day operations. | | **Viewer** | Read-only access to dashboard, conversations, analytics, and media. Cannot make any changes. | > **Info:** The default selection is **Operator**, which is suitable for most team members who need to handle customer conversations and orders. For a complete breakdown of what each role can access, see the [Roles & Permissions](https://directsale.ai/help/team/roles-permissions) page. ### Step 5: Send the Invitation 1. Click the **"Send Invitation"** button. 2. Wait for the confirmation message to appear. 3. The dialog will automatically close after a successful invitation. --- ## What Happens After You Send an Invitation 1. An **invitation email** is sent to the specified email address. 2. The team member appears in your team list with a **"Invited"** status badge (yellow). 3. The member count updates to reflect the new invitation. ### What the Invitee Receives The invited person receives an email containing: - A welcome message explaining they have been invited to join your store. - A unique **invitation link** that they must click to accept. - Instructions to set up their password. ### Accepting the Invitation When the invitee clicks the invitation link: 1. They are taken to a page where they set their **password**. 2. Once the password is set, their account is activated. 3. Their status changes from **"Invited"** to **"Active"**. 4. They can now log in to the dashboard with their email and the password they created. --- ## Handling Common Scenarios ### The Invitee Did Not Receive the Email If the team member did not receive the invitation email: 1. Ask them to check their **spam/junk** folder. 2. If still not found, go to **Dashboard > Team**. 3. Click the three-dot menu on the member's card. 4. Click **"Resend Invitation"** to send a new email. ### The Invitation Link Has Expired Invitation links expire after a set period. If the link has expired: 1. Go to **Dashboard > Team**. 2. Click the three-dot menu on the invited member's card. 3. Click **"Resend Invitation"** to generate and send a fresh invitation link. ### You Invited the Wrong Person If you sent an invitation to the wrong email address: 1. Go to **Dashboard > Team**. 2. Click the three-dot menu on the incorrect member's card. 3. Click **"Remove"** to delete the invitation. 4. Send a new invitation to the correct email address. ### The Member Needs a Different Role You can change a member's role at any time, even before they accept the invitation: 1. Go to **Dashboard > Team**. 2. Click the three-dot menu on the member's card. 3. Select the desired role (e.g., "Change to Admin"). --- ## Plan Limits Each subscription plan includes a maximum number of team members. This limit includes: - All **active** team members - All **invited** (pending) members - All **inactive** (deactivated) members The current usage is shown in the header as a counter (e.g., "3 / 5"). When you reach the limit: - The **"Invite Member"** button is disabled. - A **warning banner** appears at the bottom of the team page. - You must either **remove** existing members or **upgrade** your plan to add more. > **Info:** The account owner is not counted against the team member limit. The limit applies only to invited team members. --- ## Best Practices - **Use the least-privilege principle**: Assign the most restrictive role that still allows the team member to do their job. Start with Operator or Viewer and upgrade if needed. - **Set meaningful display names**: Use real names so other team members can easily identify who is who in activity logs and conversation assignments. - **Review your team periodically**: Deactivate or remove team members who no longer need access, especially when employees leave the organization. - **Inform invitees to check spam**: Let new team members know to check their spam folder if they do not receive the invitation email promptly. --- Source: https://directsale.ai/help/team/roles-permissions # Roles & Permissions DirectSale uses a **role-based access control (RBAC)** system to determine what each team member can see and do in the dashboard. This page provides a complete reference of all available roles and their permissions. ## Available Roles There are six roles in the system, listed from most to least privileged: | Role | Icon | Color | Description | |------|------|-------|-------------| | **Owner** | Shield | Purple | The account creator; access still depends on enabled plan modules and operation requirements. | | **Admin** | Shield | Blue | Broad tenant administration; owner-only actions, including Linked Stores, remain restricted. | | **Manager** | Settings | Green | Broad operational access to products, orders, services, shipping, analytics, and more. | | **Accountant** | -- | -- | Focused access to accounting and financial features. | | **Operator** | Chat | Orange | Day-to-day operational access: conversations, orders, shipping, and appointments. | | **Viewer** | Eye | Gray | Read-only access to view data without making changes. | > **Info:** The **Owner** role is automatically assigned to the person who creates the account. It cannot be assigned to anyone else or transferred. There is exactly one Owner per account. --- ## Detailed Role Descriptions ### Owner The Owner is the person who registered the DirectSale account. They manage the enabled tenant features, including: - All dashboard features and settings - Team management (invite, remove, change roles) - Billing and subscription management - Account deletion The Owner role cannot be changed or removed. ### Admin Admins have broad administrative access within this tenant, but do not inherit owner-only actions such as account deletion or Linked Stores authorization. They can manage the areas permitted to their role, including: - All operational features (products, orders, services, etc.) - Team management (invite, remove, change roles) - Settings and configuration - Billing management Admins are ideal for co-founders, business partners, or senior managers who need full platform access. ### Manager Managers have broad operational access but cannot manage the team or billing. They can work with: - Dashboard and analytics - Products and media - Orders and returns - Coupons and cart recovery - Shipping and logistics - Services and appointments - Integrations and multichannel - Conversations - App store and storefront - Accounting - Deploy, published website content, reviews, notifications, settings and support where available Managers are ideal for operations leads, store managers, or department heads. ### Accountant Accountants have narrowly focused access to financial features: - Dashboard (overview only) - Accounting module - Multichannel (for financial tracking across channels) - Account usage, notifications and support Accountants cannot access products, orders, conversations, services, team management, or settings. ### Operator Operators are focused on day-to-day customer-facing operations: - Dashboard (overview only) - Conversations (live chat and messaging) - Orders (view and process) - Media library - Shipping - Appointments - Accounting - Multichannel - Notifications and support Operators are ideal for customer service representatives, fulfillment staff, or front-line employees. ### Viewer Viewers have read-only access to a limited set of features: - Dashboard (overview only) - Conversations (view only) - Analytics - Media library - Account settings - Notifications and support Viewer is intended for reading business data. It does not grant product/order editing; personal preferences and permitted support actions are separate from editing commercial records. --- ## Full Permissions Matrix The table below summarizes dashboard destination access. Enabled modules, regional availability and operation-specific permissions also apply. A visible page does not authorize every action on that page; Linked Stores authorization remains owner-only. | Dashboard Section | Owner | Admin | Manager | Accountant | Operator | Viewer | |-------------------|:-----:|:-----:|:-------:|:----------:|:--------:|:------:| | **Dashboard (Overview)** | Yes | Yes | Yes | Yes | Yes | Yes | | **Analytics** | Yes | Yes | Yes | -- | -- | Yes | | **Products** | Yes | Yes | Yes | -- | -- | -- | | **Media Library** | Yes | Yes | Yes | -- | Yes | Yes | | **Orders** | Yes | Yes | Yes | -- | Yes | -- | | **Returns** | Yes | Yes | Yes | -- | -- | -- | | **Coupons** | Yes | Yes | Yes | -- | -- | -- | | **Cart Recovery** | Yes | Yes | Yes | -- | -- | -- | | **Shipping** | Yes | Yes | Yes | -- | Yes | -- | | **Shipping - Carriers** | Yes | Yes | Yes | -- | -- | -- | | **Shipping - Product Rules** | Yes | Yes | Yes | -- | -- | -- | | **Services** | Yes | Yes | Yes | -- | -- | -- | | **Appointments** | Yes | Yes | Yes | -- | Yes | -- | | **Integrations** | Yes | Yes | Yes | -- | -- | -- | | **Multichannel** | Yes | Yes | Yes | Yes | Yes | -- | | **Conversations** | Yes | Yes | Yes | -- | Yes | Yes | | **App Store** | Yes | Yes | Yes | -- | -- | -- | | **Storefront** | Yes | Yes | Yes | -- | -- | -- | | **Accounting** | Yes | Yes | Yes | Yes | Yes | -- | | **Account usage** | Yes | Yes | Yes | Yes | -- | Yes | | **Settings** | Yes | Yes | Yes | -- | -- | -- | | **Deploy** | Yes | Yes | Yes | -- | -- | -- | | **Notifications / Support** | Yes | Yes | Yes | Yes | Yes | Yes | | **Team Management** | Yes | Yes | -- | -- | -- | -- | | **Billing** | Yes | Yes | -- | -- | -- | -- | > **Info:** The "Shipping" section has granular sub-page access. Operators can view the Shipping overview and shipments list, but only Managers and above can access the Carriers configuration and Product Rules pages. --- ## Role-Specific Behaviors ### Read-Only Mode for Viewers When a user with the Viewer role accesses a page they are permitted to see, they see all the data but: - Edit buttons are hidden or disabled - Action menus (delete, update, toggle) are not visible - Forms are not accessible - Status change buttons are not shown ### Appointments: Action Restrictions On the Appointments page, users with the **Viewer** or **Accountant** role see a "-" in the Actions column instead of the confirm/complete/cancel buttons. Only Owner, Admin, Manager, and Operator roles can take actions on appointments. ### Team Management: Action Restrictions Only the **Owner** and **Admin** roles can: - See the "Invite Member" button - See the three-dot action menu on team member cards - Change roles, activate/deactivate, or remove members - Resend invitations Other roles do not receive team-management controls. Navigating directly to a page does not bypass API authorization. --- ## Changing a Team Member's Role If you are an Owner or Admin: 1. Navigate to **Dashboard > Team**. 2. Find the team member whose role you want to change. 3. Click the **three-dot menu** on their card. 4. Select the desired role from the list (e.g., "Change to Manager"). 5. The role updates immediately. > **Warning:** Be careful when assigning the Admin role. Admins have full access to your account including the ability to manage other team members, view financial data, and change settings. --- ## Choosing the Right Role Use this quick guide to determine which role to assign: | Scenario | Recommended Role | |----------|-----------------| | A business partner who needs full access | **Admin** | | A store manager who handles daily operations | **Manager** | | A bookkeeper or accountant tracking finances | **Accountant** | | A customer service agent handling chats and orders | **Operator** | | A stakeholder or auditor who needs to see reports | **Viewer** | | A warehouse worker processing shipments | **Operator** | | A marketing team member managing products and coupons | **Manager** | | A temporary intern observing operations | **Viewer** | --- ## Security Recommendations - **Limit Admin access**: Only assign Admin to people you fully trust with your business data. - **Use Operator for front-line staff**: Operators have just enough access to handle customer interactions without being able to modify products or settings. - **Regularly audit roles**: Review your team list periodically and downgrade or remove access for people who no longer need it. - **Deactivate instead of removing**: If a team member is on leave, deactivate them rather than removing them. This preserves their data and makes it easy to reactivate later. --- Source: https://directsale.ai/help/shipping/index # Shipping Management The Shipping module in DirectSale provides a comprehensive system for managing how products are delivered to your customers. From configuring shipping carriers and setting pricing policies to tracking individual shipments, the shipping section covers the entire fulfillment workflow. ## Overview The Shipping section is organized into three pages, accessible via the tabbed navigation at the top: | Page | Path | Description | |------|------|-------------| | **Shipping (Overview)** | `/dashboard/shipping` | Dashboard showing shipment statistics, shipping policy configuration, and a list of all shipments with status management. | | **Carriers** | `/dashboard/shipping/carriers` | Configure shipping carriers, manage API connections, compare rates, and test live pricing. | | **Product Rules** | `/dashboard/shipping/rules` | Set per-product shipping rules including carrier preferences, delivery type, protection, and more. | --- ## Shipping Overview Dashboard The main Shipping page provides an at-a-glance view of your shipping operations. ### Statistics Cards Four summary cards are displayed at the top: | Card | Description | |------|-------------| | **Total Shipments** | The total number of shipments created across all orders. | | **Active Carriers** | The number of shipping carriers you have configured and enabled. | | **In Transit** | The count of shipments currently in transit. | | **Cost Strategy** | Your current shipping cost strategy (e.g., "Pass to Customer", "Flat Rate"). | ### Shipping Policy The Shipping Policy section lets you configure global shipping settings that affect how shipping costs are calculated and presented to customers. #### Cost Strategy Options | Strategy | Description | |----------|-------------| | **Pass to Customer** | Actual shipping costs from carriers are passed directly to customers at checkout. | | **Free Shipping** | All orders ship for free, regardless of order value. You absorb the shipping cost. | | **Flat Rate** | A single fixed shipping cost is applied to all orders. Enter the flat rate amount when selected. | | **Free Above Threshold** | Orders above a specified amount get free shipping. Orders below the threshold pay the actual shipping cost. Enter the threshold amount when selected. | #### Display & Notification Toggles | Setting | Description | |---------|-------------| | **Show Estimated Delivery** | Display estimated delivery dates to customers during checkout. | | **Show Carrier Name** | Display the name of the shipping carrier to customers. | | **Email Tracking to Customer** | Automatically send tracking information to customers via email when a shipment is created. | | **Auto-Select Cheapest Carrier** | Automatically select the least expensive carrier/service for each shipment. | Click **"Save Policy"** after making changes to persist your settings. ### Recent Shipments The shipments table shows all shipments with the following columns: | Column | Description | |--------|-------------| | **Order** | The order number associated with the shipment. | | **Customer** | The customer's name. | | **Carrier** | The shipping carrier used for this shipment. | | **Tracking** | The tracking code. Clickable if a tracking URL is available. | | **Status** | The current shipment status (color-coded badge). | | **Date** | When the shipment was created. | | **Actions** | Status update dropdown, view order, track, and download label buttons. | #### Shipment Statuses | Status | Color | Description | |--------|-------|-------------| | **Label Created** | Gray | A shipping label has been created but the package has not been picked up. | | **Picked Up** | Blue | The carrier has picked up the package. | | **In Transit** | Indigo | The package is on its way to the destination. | | **Out for Delivery** | Purple | The package is out for final delivery. | | **Delivered** | Green | The package has been delivered successfully. | | **Exception** | Red | There is an issue with the shipment (e.g., delivery attempt failed, address problem). | | **Returned** | Orange | The package has been returned to the sender. | #### Status Transitions You can update a shipment's status using the dropdown in the Actions column. The available transitions depend on the current status: | Current Status | Can Transition To | |---------------|-------------------| | Label Created | Picked Up, Exception | | Picked Up | In Transit, Exception | | In Transit | Out for Delivery, Delivered, Exception | | Out for Delivery | Delivered, Exception | | Exception | In Transit, Returned | | Delivered | (terminal -- no further transitions) | | Returned | (terminal -- no further transitions) | #### Filtering Shipments Use the status dropdown above the table to filter shipments by status. Select "All Statuses" to see everything. --- ## Who Can Access Shipping? Access to shipping features is role-dependent: | Role | Shipping Overview | Carriers | Product Rules | |------|:-----------------:|:--------:|:-------------:| | **Owner** | Yes | Yes | Yes | | **Admin** | Yes | Yes | Yes | | **Manager** | Yes | Yes | Yes | | **Operator** | Yes | -- | -- | | **Accountant** | -- | -- | -- | | **Viewer** | -- | -- | -- | > **Info:** Operators can view shipments and update their statuses but cannot configure carriers or product rules. This allows fulfillment staff to manage day-to-day shipping operations without accessing configuration settings. --- ## Next Steps - [Zones & Restrictions](https://directsale.ai/help/shipping/zones-restrictions) -- Destination patterns, carrier assignments and blocked destinations. - **[Configuring Carriers](https://directsale.ai/help/shipping/carriers)** -- Learn how to add shipping carriers, connect APIs, and compare rates. - **[Rates & Product Rules](https://directsale.ai/help/shipping/rates-rules)** -- Set per-product shipping rules, delivery preferences, and protection levels. --- Source: https://directsale.ai/help/shipping/carriers # Configuring Shipping Carriers The Carriers page lets you connect shipping carriers to your account, compare rates, test connections, and manage carrier settings. DirectSale supports both **direct carriers** (e.g., Royal Mail, DHL, FedEx) and **multi-carrier aggregators** (e.g., Shippo, Parcel2Go) that provide access to multiple carriers through a single API. ## Accessing the Carriers Page Navigate to **Dashboard > Shipping > Carriers** (or go directly to `/dashboard/shipping/carriers`). --- ## Page Overview The Carriers page is organized into four main sections: 1. **Rate Comparison Tool** -- Compare estimated shipping rates across carriers before adding them 2. **Your Carriers** -- Manage carriers you have already connected 3. **Add Carrier** -- Step-by-step wizard to connect a new carrier 4. **Live Rate Testing** -- Test real-time rates from your connected carriers --- ## 1. Rate Comparison Tool Before adding carriers, you can compare rates across all available carriers for a given route. This helps you decide which carriers to connect. ### How to Compare Rates 1. Enter the **From Country** and **From Postcode** (your dispatch location). 2. Enter the **To Country** and **To Postcode** (the destination). 3. Enter the package **Weight (kg)**. 4. Optionally enter package **dimensions** (Length, Width, Height in cm). 5. Click **"Compare Rates"**. ### Understanding Rate Results The comparison table shows: | Column | Description | |--------|-------------| | **Carrier** | The name of the carrier. The cheapest option is highlighted with a "Cheapest" badge. | | **Service** | The specific shipping service (e.g., "Next Day", "Standard Parcel"). | | **Delivery** | Estimated delivery time in days. | | **Price** | The shipping cost in the appropriate currency. | | **Source** | Where the rate data comes from (e.g., "Shippo", "Parcel2Go", or "Estimated"). | | **Tracked** | Whether the service includes tracking. | | **Action** | A quick "Add Carrier" button that scrolls to the add-carrier section. | > **Info:** Rates shown in the comparison tool may be **estimated** (based on historical data) or **live** (fetched from carrier APIs in real-time). The source column indicates which type of rate you are seeing. Estimated rates are approximate and actual rates may differ slightly. --- ## 2. Your Carriers This section lists all carriers you have connected to your account. Each carrier is displayed as an expandable card. ### Carrier Card Overview Each carrier card shows: - **Carrier Name** and carrier code - **Active/Inactive** status indicator (green/gray dot) - **Multi-Carrier** badge (if the carrier is an aggregator like Shippo) - **Sandbox** badge (if the carrier is in test mode) - **Connection Status** indicator (connected, failed, or untested) - **Active toggle** to enable/disable the carrier - **Remove button** to delete the carrier ### Expanding a Carrier Click on a carrier card to expand it and see detailed information: #### Connection & Testing - **Sandbox Mode / Production Mode** toggle -- Switch between test and live environments - **Test Connection** button -- Verify that your API credentials are working - **Connection Status** badge -- Shows "Connected", "Failed", or "Not Tested" - **Last Tested** timestamp -- When the connection was last verified #### Carrier Details (Read-Only View) | Field | Description | |-------|-------------| | **API Key** | Shown as masked dots if set, or "Not Set" if empty. | | **Account Number** | Your carrier account number. | | **Sender Address** | Your business name and dispatch address. | | **Markup** | Any pricing markup applied to this carrier's rates (None, Fixed, or Percentage). | #### Editing Carrier Settings Click **"Edit Settings"** to modify a carrier's configuration: **API Credentials:** | Field | Description | |-------|-------------| | **API Key** | Your carrier API key. Leave empty to keep the existing value. | | **API Secret** | Your carrier API secret. Leave empty to keep the existing value. | | **Account Number** | Your account or contract number with the carrier. | **Sender Address:** | Field | Description | |-------|-------------| | **Sender Name** | Your business name (used on shipping labels). | | **Street Address** | The dispatch street address. | | **City** | The dispatch city. | | **Postcode** | The dispatch postal/ZIP code. | | **Country** | The dispatch country (ISO 2-letter code, e.g., "US", "GB", "DE"). | | **Phone** | A contact phone number for the sender. | **Pricing Options:** | Field | Description | |-------|-------------| | **Markup Type** | Choose from: None, Fixed Amount, or Percentage. | | **Markup Value** | The markup amount. For percentage, enter a number like "10" for 10%. For fixed, enter the currency amount. | | **Default Carrier** | Toggle to make this carrier the default when auto-selecting. | Click **"Save Changes"** to apply your edits. ### Removing a Carrier 1. Click the red **trash icon** on the carrier card. 2. Confirm the removal in the dialog. > **Warning:** Removing a carrier deletes all its configuration data including API credentials and sender address. Existing shipments that used this carrier are not affected, but no new shipments can be created with it. --- ## 3. Adding a New Carrier The "Add Carrier" section at the bottom of the page guides you through a multi-step process. ### Step 1: Select Country Choose the country where your carriers operate. This determines which carrier templates are available (since carriers are region-specific). ### Step 2: Select Carrier Choose from the available carrier templates. The dropdown is organized into two groups: - **Direct Carriers** -- Individual shipping companies (e.g., Royal Mail, USPS, DHL Express) - **Multi-Carrier Aggregators** -- Platforms that provide access to multiple carriers through one API (e.g., Shippo, Parcel2Go) > **Info:** Multi-carrier aggregators are a convenient way to access many carriers with a single API key. They often offer negotiated rates that may be lower than direct carrier rates. When you select a carrier, the **Available Services** are displayed (e.g., "Next Day Delivery", "Standard Parcel", "International Tracked"). ### Step 3: API Credentials Enter the API credentials provided by the carrier or aggregator: | Field | Description | |-------|-------------| | **API Key** | The primary API key or token. | | **API Secret** | A secondary secret or password (not all carriers require this). | | **Account Number** | Your account or contract number (not all carriers require this). | ### Step 4: Sender Address Enter your dispatch (return) address: | Field | Description | |-------|-------------| | **Sender Name** | Your business name. | | **Street Address** | Your dispatch address. | | **City** | The city. | | **Postcode** | The postal/ZIP code. | | **Phone** | A contact phone number. | ### Step 5: Pricing & Markup Configure pricing options: | Field | Description | |-------|-------------| | **Markup Type** | Choose: None, Fixed Amount, or Percentage. | | **Markup Value** | If a markup type is selected, enter the amount. | | **Set as Default** | Toggle on to make this the default carrier for new shipments. | Click **"Add Carrier"** to complete the setup. --- ## 4. Live Rate Testing After connecting carriers, you can test live rates to verify they are working correctly. ### How to Test Live Rates 1. Scroll to the **"Test Live Rates"** section at the bottom of the page. 2. Enter the following: - **Weight (kg)** -- The package weight - **To Postcode** -- The destination postal code - **To Country** -- The destination country code (e.g., "US", "GB") - **Length, Width, Height (cm)** -- Optional package dimensions 3. Click **"Get Live Rates"**. ### Understanding Live Rate Results The results table shows: | Column | Description | |--------|-------------| | **Carrier** | The carrier name. Cheapest option is highlighted. | | **Service** | The shipping service name. | | **Delivery** | Estimated delivery time. | | **Original Price** | The carrier's base price before any markup. | | **Final Price** | The price after your markup is applied. Shows the markup breakdown below. | | **Tracked** | Whether tracking is included. | | **Mode** | Whether the rate came from sandbox (test) or live (production) mode. | > **Info:** Live rates are fetched from your connected carriers' APIs in real-time. Make sure you have tested the connection (green "Connected" status) before testing live rates. --- ## Sandbox vs. Production Mode Each carrier can operate in **Sandbox (Test)** or **Production (Live)** mode: | Mode | Description | |------|-------------| | **Sandbox** | Uses the carrier's test environment. Rates may differ from production. No real shipments are created. Useful for testing your setup. | | **Production** | Uses the carrier's live environment. Real shipments are created and real charges apply. | To toggle between modes: 1. Expand the carrier card. 2. Click the **Sandbox/Production** toggle. 3. The connection status resets to "Untested" when switching modes (since credentials may differ between environments). 4. Click **"Test Connection"** to verify the new mode works. > **Warning:** Always test your carrier configuration in Sandbox mode before switching to Production. Production mode creates real shipments and incurs real charges. --- ## Best Practices - **Start with a multi-carrier aggregator** if you are unsure which carriers to use. Aggregators like Shippo provide access to many carriers with one API key. - **Test connections after adding credentials** to catch configuration errors early. - **Use sandbox mode first** to verify everything works before going live. - **Apply markups strategically** to cover handling costs or earn a margin on shipping. - **Set a default carrier** to streamline the fulfillment process. - **Compare rates regularly** to ensure you are offering competitive shipping prices to your customers. --- Source: https://directsale.ai/help/shipping/rates-rules # Shipping Rates & Product Rules The Product Rules page lets you configure shipping rules on a per-product basis. Instead of applying a single shipping strategy to your entire catalog, you can fine-tune how each product is shipped -- choosing specific carriers, delivery speeds, protection levels, handover methods, and more. ## Accessing the Product Rules Page Navigate to **Dashboard > Shipping > Product Rules** (or go directly to `/dashboard/shipping/rules`). --- ## Page Overview The Product Rules page displays all your products in a table. For each product, you can configure shipping-specific settings. A counter in the header shows how many products have custom rules configured vs. the total number of products (e.g., "12 configured / 45 total"). ### Search and Test Tools At the top of the page, two input fields help you work efficiently: | Field | Description | |-------|-------------| | **Product Search** | Search for products by name or SKU to quickly find what you need. | | **Test Postcode** | Enter a destination postcode to preview rate estimates for each product. This postcode is used when you click the rate preview button on any product. | --- ## Product Rules Table Each row in the table represents a product and its shipping configuration. Products with existing rules are highlighted with a subtle blue background. ### Table Columns | Column | Description | |--------|-------------| | **Product** | Product image, name, weight, dimensions, SKU, and price. | | **Delivery** | The preferred delivery speed for this product. | | **Carriers** | Which carriers are allowed for this product, in priority order. | | **Handover** | How the package is handed to the carrier (Drop-off or Pickup). | | **Protection** | Insurance/protection level for the shipment. | | **Free** | Whether this product ships for free. | | **Sign** | Whether a signature is required on delivery. | | **Fragile** | Whether the product needs fragile handling. | | **Auto** | Whether to auto-fulfill the shipment when the order is placed. | | **Actions** | Buttons to edit dimensions, preview rates, or reset the rule. | --- ## Configuring Product Rules All changes are saved automatically when you modify any field. There is no manual save button -- each change is persisted to the server immediately. ### Delivery Type Choose the preferred delivery speed for the product: | Option | Description | |--------|-------------| | **Auto** | The system automatically selects the best delivery option based on carrier availability. | | **Express** | Same-day or next-business-day delivery. | | **Next Day** | Delivery within 1 business day. | | **Two Day** | Delivery within 2 business days. | | **Standard** | Standard delivery (typically 3-5 business days). | | **Economy** | Budget delivery (typically 5-10 business days). | When a specific delivery type is selected (not "Auto"), only carrier services matching that speed tier are shown in rate estimates. ### Carrier Selection & Priority You can select which carriers are allowed to ship each product and set their priority order. **How carrier selection works:** - By default (no carriers selected), the system uses **all active carriers** and auto-selects the best option. - When you check one or more carriers, **only those carriers** are used for the product. - The **order** of selected carriers matters -- the first carrier in the list has highest priority. **Reordering carriers:** 1. Use the **up/down arrows** next to each selected carrier to change their priority. 2. The numbered list (1, 2, 3...) indicates the priority order. 3. Higher-priority carriers are preferred when multiple carriers offer similar rates. **Removing a carrier:** - Click the **X button** that appears when you hover over a selected carrier. - Or uncheck the carrier's checkbox. ### Service Preferences Within each carrier, you can mark specific services as **preferred** by clicking the star icon on rate estimate cards. Preferred services are prioritized over other services from the same carrier. > **Info:** Service preferences work together with carrier priority. The system first looks at your highest-priority carrier, then within that carrier, selects the preferred service (if set) or the cheapest available service. ### Handover Method Choose how the package is handed to the carrier: | Option | Description | |--------|-------------| | **Drop-off** | You drop the package at a carrier drop-off point or post office. | | **Pickup** | The carrier picks up the package from your location. | This setting filters rate estimates to only show services that support the selected handover method. ### Protection Level Configure insurance/protection for the shipment: | Level | Description | |-------|-------------| | **None** | No additional protection. Standard carrier liability applies. | | **Included** | Use the carrier's included protection (if available). No extra cost. | | **Custom** | Set a specific coverage amount. An additional field appears where you enter the protection amount in your store currency. The system automatically selects carrier services that offer matching coverage. | When "Custom" is selected, rate estimates show the protection cost included in the final price, and a shield icon indicates which rates include the requested protection level. ### Toggle Options Four toggle switches provide quick on/off control: | Toggle | Description | |--------|-------------| | **Free Shipping** | When enabled, shipping for this product is free to the customer (you absorb the cost). | | **Signature Required** | When enabled, only carrier services that offer signature-on-delivery are shown. | | **Fragile** | When enabled, the product is flagged as fragile. This filters for services that support fragile handling. | | **Auto-Fulfill** | When enabled, a shipment is automatically created when an order containing this product is placed. | --- ## Editing Product Dimensions Accurate weight and dimensions are essential for getting correct shipping rates. You can edit them directly from the Product Rules page. ### How to Edit Dimensions 1. Click the **pencil icon** in the Actions column for the product. 2. An inline editor row appears below the product with fields for: - **Weight (kg)** -- The product's weight in kilograms. - **Length (cm)** -- Package length in centimeters. - **Width (cm)** -- Package width in centimeters. - **Height (cm)** -- Package height in centimeters. 3. A **volumetric weight** is calculated automatically: `(L x W x H) / 5000`. 4. Click **"Save"** to persist the changes. 5. Click **"Cancel"** to discard. > **Info:** Carriers use the higher of actual weight and volumetric weight (dimensional weight) to calculate shipping costs. Setting accurate dimensions helps ensure your rate estimates are correct. --- ## Rate Estimates / Preview You can preview what shipping rates would be available for any product based on its current rules. ### Viewing Rate Estimates 1. Optionally enter a **Test Postcode** in the search bar at the top of the page. 2. Click the **dollar sign icon** in the Actions column for the product you want to preview. 3. A rate estimate panel appears below the product row. ### Understanding Rate Estimate Cards Each available shipping option is displayed as a card showing: | Element | Description | |---------|-------------| | **Carrier Name** | The carrier offering this service. | | **Service Name** | The specific shipping service. | | **Price** | The final price including any markup and protection costs. | | **Base Price** | Shown below the final price if a markup was applied. | | **Delivery Time** | Estimated delivery in days. | | **Tracked/Untracked** | Whether the service includes tracking. | | **Badges** | Visual indicators for special attributes. | ### Rate Card Badges | Badge | Color | Description | |-------|-------|-------------| | **Auto-Select** | Blue | This is the service that would be automatically selected based on your carrier priorities and service preferences. | | **Preferred** | Yellow | This service has been marked as a preferred service for this carrier. | | **Cheapest** | Green | This is the lowest-priced option available. | | **Sandbox** | Orange | This rate comes from a carrier in sandbox/test mode. | ### Protection Information Rate cards also show available protection options: - **Free Cover Included** -- Complimentary coverage included with the service (shown with a green shield icon). - **Basic Cover** -- An affordable add-on protection tier with its price and coverage amount. - **Full Cover** -- Comprehensive protection with its price and maximum coverage amount. Highlighted in blue when your Custom protection level matches. ### Applied Filters When you have specific rules set for a product, the rate estimate panel shows which filters are being applied (e.g., "Drop-off", "Fragile", "Signature", "Protection: custom"). It also indicates how many rates were filtered out by your rules. ### Refreshing Rates Click the **"Refresh"** button in the rate panel to re-fetch rates. Rates are also automatically refreshed when you change any rule setting that affects which rates are available (carrier selection, delivery type, handover method, protection, signature, or fragile settings). --- ## Resetting a Product Rule To remove all custom shipping rules from a product and return it to the default behavior: 1. Click the red **reset icon** (circular arrow) in the Actions column. 2. Confirm the reset in the dialog. 3. The product will use the global shipping policy defaults. --- ## How Auto-Selection Works When a shipment is created (either manually or via auto-fulfill), the system selects a carrier and service using this logic: 1. **Check carrier priority** -- If specific carriers are selected for the product, use them in priority order. Otherwise, use all active carriers. 2. **Apply filters** -- Filter services based on delivery type, handover method, signature requirement, fragile flag, and protection level. 3. **Check service preferences** -- For the highest-priority carrier that has available services, check if any services are marked as preferred. 4. **Select the service** -- If preferred services exist and are available, use the first preferred service. Otherwise, use the cheapest available service from the highest-priority carrier. > **Info:** The "Auto-Select" badge on rate estimate cards shows you exactly which service would be chosen by this algorithm, helping you verify your configuration before any real shipments are created. --- ## Best Practices - **Set weight and dimensions for all products** to get accurate shipping rates. Without this data, rate estimates will be unreliable. - **Use the rate preview** to verify your rules before going live. Check that the auto-selected service matches your expectations. - **Start with "Auto"** delivery type and no specific carrier selection, then tighten rules only for products that need special handling. - **Mark fragile products** to ensure they are shipped with appropriate services. - **Set protection levels** for high-value items to reduce the risk of loss or damage claims. - **Use service preferences** when you want a specific service from a carrier (e.g., always use "Next Day Tracked" from Royal Mail) rather than just the cheapest option. - **Test with different postcodes** to see how rates vary by destination before setting fixed shipping costs. --- Source: https://directsale.ai/help/shipping/zones-restrictions # Shipping Zones and Destination Restrictions Use **Shipping > Zones** to group destinations and assign carriers/pricing rules. Use **Shipping > Restrictions** to block destinations your business cannot serve. ## Before you start Configure at least one carrier, accurate product weight/dimensions and your intended dispatch region. Decide which destinations are supported. A configured zone does not guarantee a carrier actually serves every address; live rates and carrier eligibility still matter. ## Create a zone 1. Open Zones and create a zone with a recognizable name and optional description. 2. Select its pricing type and supply the relevant base cost, markup type/value, priority and active status. 3. Save and expand the zone. 4. Add a destination pattern: country, postcode prefix or the range fields offered for the selected pattern type. 5. Save the pattern and verify its country and boundaries. 6. Assign an available carrier using the zone's carrier action and complete its offered settings. 7. Repeat for additional patterns/carriers, then test representative addresses. Do not use overlapping patterns without checking the resulting rate selection. Priority is part of zone configuration; verify the actual quote rather than assuming how a tie will resolve. Deleting a pattern, assignment or zone can change which shipping options customers receive. ## Add a destination restriction 1. Open Restrictions and add a country. 2. Select whether it is blocked and choose the reason type. 3. Enter a clear reason consistent with your delivery policy. 4. Save and inspect the saved country entry. 5. Test both a restricted and an allowed address through the normal rate/checkout workflow. Remove a restriction only when the business can serve the destination. A restriction setting is not legal advice or a carrier service commitment. ## Verify and troubleshoot No rate: check country/postcode match, active zone, carrier assignment, carrier credentials, restrictions and package measurements. Unexpected price: compare base cost and markup with the carrier quote and product-specific rules. Missing zone actions may indicate role or module access limitations. Use [Carriers](https://directsale.ai/help/shipping/carriers) for credential/rate tests and [Product Shipping Rules](https://directsale.ai/help/shipping/rates-rules) for overrides. Do not purchase a shipping label merely to test whether a screen opens. --- Source: https://directsale.ai/help/multichannel/linked-stores # Linked Stores and Centrally Managed Catalogs Use **Dashboard > Multichannel > Linked Stores** to connect two or more DirectSale tenants. One **hub** is the central source; each **satellite** sells through its own store. This is not a messaging-channel or external WooCommerce connection. ## Manage this tenant's website on a VPS Set up the initial website in **Dashboard > Deploy**. Then use **Linked website on VPS** on this page for synchronization status, central/VPS product counts, the last publication, **Refresh** and **Sync now**. This card uses your existing website connection; no invitation or second tenant is needed. Saved product, price, stock and published website changes are sent automatically. Each accepted publication clears the website cache. **Sync now** queues a full publication; wait for the pending status to clear before treating it as complete. A failed delivery keeps its error visible and retries automatically. Draft pages, layouts and blog posts stay private until published. The same product and stock change events that synchronize linked stores also publish the changed tenant's VPS website. Linked-store category changes publish the destination tenant's VPS categories too. Configure the relationship between two tenants using the options below; website publication uses the complete published website data. ## Before linking two tenants Sign in as the **owner** of each participating tenant. Create the separate accounts first and know the satellite owner's registered email. Agree which store owns products, prices, stock and accounting. Review existing SKUs, variants and categories before synchronizing live catalogs. A hub can have multiple satellites. A satellite can have only one pending, active or paused hub relationship and cannot itself be a hub. A hub with participating stores cannot become a satellite. Linking does not grant access to the other tenant's password, users, conversations or all settings. ## Connect two stores, then add more 1. Sign into the intended hub as owner and open **Linked Stores**. 2. In **Connect a satellite tenant**, enter **Satellite tenant owner email**. Use the existing account's email, not a customer email. 3. Review the synchronization options. Many options are enabled by default; **Customer details** is off. 4. Review the hub warehouse, safety stock and pricing adjustment shown in the form. 5. Select **Send invitation**. The relationship is **Pending**, not yet authorized to synchronize. 6. Sign into the invited satellite as its owner. Open Linked Stores, verify the hub and proposed scope, then select **Accept connection** or **Reject**. 7. Invitations expire after seven days. Ask the hub to send a fresh invitation if necessary. Check the in-panel invitation even if no notification email arrived. 8. When Active, return to the hub and select **Sync now**. Inspect the result and actual satellite products. 9. To connect a third or later tenant, repeat from the same hub. Each satellite owner must approve its own invitation. ## Synchronization options | Option | Meaning and checks | | --- | --- | | Products | Core product data follows the hub; verify names and SKU matching | | Categories | Hierarchy, ordering and product assignments follow the hub | | Descriptions | Centrally managed product descriptions; edit these at their source | | Images | Product and variant images follow the hub | | Product SEO | Product slugs and SEO metadata; review existing localized URLs | | Promotions | Discounts, gifts and festival flags | | Visibility & preorder | Publishing, featured and preorder settings; this does not publish a private storefront | | Units | Product units and quantity precision | | Prices | Hub-authoritative checkout pricing when enabled; verify adjustments and currency | | Inventory | Central stock validation/reservation; check warehouse, safety stock and variants | | Orders | Satellite sales are recorded in the hub | | Cancellations | Cancellation/return synchronization; requires Orders | | Central accounting | Central handling of sales invoices; requires Orders | | Customer details | Separate permission to share customer identity and delivery details; requires Orders | | Variants | Variant mapping and control, not merely parent product matching | | Create missing products | Creates satellite products when a matching SKU is missing; check duplicates and plan limits | Cancellations, Central accounting and Customer details cannot be enabled without Orders. Correct rejected combinations rather than repeatedly retrying. Do not assume linking converts currencies or merges subscriptions and payment credentials. ## Change settings and verify the result 1. Open the relevant card in the hub, change the intended options, and select **Save settings**. 2. Wait for confirmation, then use **Sync now** while Active. 3. Reload a sample satellite product and compare the fields you enabled. 4. Review mapped products, mapped categories, central orders, sync events and the last synchronized time on the card. Saving settings does not prove a full sync finished. Check one product with variants, its price, warehouse stock and image assignments. Hub-controlled fields must be edited at the hub; AI generation and metadata autofill cannot bypass that ownership. ## Map existing categories manually 1. Expand **Manual category mapping** in the hub's connection card. 2. Choose **Central category** and **Satellite category**. Labels include hierarchy and language. 3. Select **Create mapping** or **Update mapping**. 4. Inspect the status and any last sync error. Select **Refresh** after changes. 5. If a list is empty, create categories first or run Sync now with category sync enabled. A satellite category already used by another mapping in the same connection cannot be assigned twice. Removing a mapping does not delete the category; automatic sync may match it again by name. Category hierarchy, ordering and assignments follow the hub when category synchronization is enabled. ## Daily operations and independent settings A satellite keeps its own storefront design, domain and independent page content. This feature is not a universal login or a combined inbox for all tenants. Use [Team Management](https://directsale.ai/help/team/index) for staff access and [Connections](https://directsale.ai/help/multichannel/connecting-channels) for external commerce platforms. Before real sales, verify representative products and stock at both stores. A displayed stock number is not proof of successful central reservation. After an authorized test order, check its central reference and that accounting/customer sharing follows the selected scope. Avoid entering the same central sale manually a second time. ## Pause, resume or disconnect - **Pause** temporarily stops an active relationship; either participant can pause. - **Resume** works on a paused relationship, and only the tenant that paused it can resume. - **Disconnect** requires confirmation. Existing products and orders remain, but synchronization stops. Review stock, pricing and pending fulfillment first. - **Reject** declines a pending invitation without activating it. ## Troubleshooting | Symptom | Next action | | --- | --- | | Access denied | Sign in as the tenant owner; team membership alone is not sufficient | | Satellite not found | Check the registered email and that it is a different existing tenant | | Already has a hub | Inspect pending, active and paused connections | | Cannot become a hub/satellite | Check the one-level structure; chained hubs are not supported | | Invitation expired | Send and accept a fresh invitation | | Sync unavailable | Confirm Active status and perform the action from the hub | | Field edits blocked | Edit the hub-owned field at its source or review sync settings | | Missing/duplicate products | Compare SKUs, mappings, variants, create-missing option and sync errors | | Invalid warehouse | Select an active warehouse belonging to the hub | | Resume rejected | Use the account that paused the connection | | Customer details missing | Check the separate Customer details option and Orders dependency | Send [Support](https://directsale.ai/help/getting-started/support) the store names, your role, connection status, affected SKU and exact error. Do not include passwords, tokens or unrelated customer data. --- Source: https://directsale.ai/help/multichannel/index # Multichannel Sales Multichannel Sales lets you list and sell your products across multiple e-commerce platforms -- WooCommerce, Shopify, PrestaShop, OpenCart, Amazon, and eBay -- all managed from a single dashboard. Stock levels, prices, and product data stay synchronized across every connected platform. ## Accessing Multichannel Navigate to **Dashboard > Multichannel** from the sidebar. The Multichannel navigation includes: | Tab | Description | |-----|-------------| | **Overview** | Dashboard with summary stats, platform breakdown, quick actions, and recent sync activity. | | **Listings** | Manage all product listings across connected platforms. | | **Sync Logs** | View the history of all synchronization operations. | | **Stock History** | Track stock level changes over time. | | **Linked Stores** | Link authorized DirectSale tenants as a hub and satellites; configure what is synchronized. | --- ## Overview Dashboard The Overview page is your command center for multichannel operations. ### Summary Cards Five cards at the top provide a snapshot of your multichannel status: | Card | Description | |------|-------------| | **Total Listings** | The total number of product listings across all connected platforms. | | **Active** | Listings that are currently active and selling. | | **Synced** | Listings that are successfully synchronized with their external platforms. | | **Errors** | Listings that have encountered synchronization errors and need attention. | | **Pending** | Listings that are waiting to be synced for the first time. | ### Connected Platforms Below the summary cards, each connected platform is displayed as a card showing: - **Platform badge** -- Color-coded identifier (e.g., purple for WooCommerce, green for Shopify). - **Connection name** -- The name you gave this connection. - **Listings count** -- Total products listed on this platform. - **Synced count** -- Number of successfully synced listings. - **Error count** -- Number of listings with sync errors. #### Per-Platform Actions Each platform card offers quick action buttons: | Action | Description | |--------|-------------| | **Sync** (refresh icon) | Triggers a full sync for this connection -- updates stock, prices, and pulls orders. | | **Listings** | Navigates to the Listings page filtered to this specific connection. | | **Push Stock** | Pushes current stock quantities from your catalog to this platform for all listings. | | **Push Prices** | Pushes current prices from your catalog to this platform for all listings. | | **Register Webhooks** | Registers webhooks with the external platform so it can notify your system of changes (e.g., new orders, stock updates). | > **Info:** Registering webhooks is important for real-time updates. Without webhooks, changes on the external platform (such as new orders or stock changes) will only be detected during manual or scheduled syncs. ### Quick Actions A grid of shortcut cards provides fast access to common tasks: | Quick Action | Description | |--------------|-------------| | **Manage Listings** | Opens the Listings management page. | | **Sync Logs** | Opens the sync log history. | | **Stock History** | Opens the stock change history. | | **Connections** | Opens the platform connections management page where you add, test, and delete connections. | | **Analytics** | Opens the multichannel analytics page for revenue and performance insights. | ### Recent Sync Activity A table at the bottom of the Overview shows the most recent synchronization operations: | Column | Description | |--------|-------------| | **Type** | The type of sync operation (e.g., stock update, price push, product sync) along with the direction (push/pull). | | **Platform** | The platform this sync was performed on. | | **Status** | The result of the sync -- completed, failed, processing, pending, or partial. | | **Items** | Shows succeeded/total items, with failed items highlighted in red. | | **Time** | When the sync operation started. | #### Sync Status Colors | Status | Color | Description | |--------|-------|-------------| | **Completed** | Green | All items synced successfully. | | **Failed** | Red | The sync operation failed entirely. | | **Processing** | Blue | The sync is currently in progress. | | **Pending** | Yellow | The sync is queued and waiting to start. | | **Partial** | Orange | Some items synced, but some failed. | ### Empty State If you have no connected platforms or listings, the Overview shows a prompt to connect your first store. Click **Connect Store** to navigate to the Connections page. --- ## Supported Platforms | Platform | Badge | Description | |----------|-------|-------------| | **WooCommerce** | Purple | Self-hosted WordPress e-commerce. Requires Consumer Key and Consumer Secret. | | **Shopify** | Green | Hosted e-commerce platform. Requires an Admin API Access Token. | | **PrestaShop** | Pink | Open-source e-commerce. Requires an API Key. | | **OpenCart** | Blue | Open-source e-commerce. Requires an API Key. | | **Amazon** | Orange | Amazon marketplace. Requires SP-API credentials (LWA Client, AWS IAM, Refresh Token). | | **eBay** | Yellow | eBay marketplace. Supports OAuth authorization or manual token entry. | --- ## Getting Started For connections between DirectSale tenants, follow [Linked Stores](https://directsale.ai/help/multichannel/linked-stores). This is separate from external commerce connections and does not provide a single login for every tenant's settings or inbox. For the separate marketplace workspace, see [Marketplace](https://directsale.ai/help/multichannel/marketplace). For a rial or toman storefront, [Selling Through Torob](https://directsale.ai/help/multichannel/torob) explains the separate readiness, merchant registration, product API and channel-price workflow. Torob does not use the ordinary platform connection form. To begin selling on multiple platforms: 1. **Connect a platform** -- Go to **Dashboard > Connections** and add a new platform connection with your store credentials. 2. **Test the connection** -- Click the **Test** button on the connection card to verify connectivity. 3. **Add product listings** -- Go to **Dashboard > Multichannel > Add Products** to select products from your catalog and push them to the connected platform. 4. **Configure pricing** -- Set pricing rules (manual, markup, or margin-based) for each platform. 5. **Register webhooks** -- Use the webhook button on the platform card to enable real-time order and stock notifications. 6. **Monitor sync status** -- Use the Overview dashboard and Sync Logs to track synchronization health. > **Warning:** Before pushing products to a platform, make sure the connection is healthy (green check icon). Attempting to sync with an unhealthy connection will result in errors. ## Best Practices - **Test connections regularly** to catch authentication issues early (e.g., expired tokens). - **Register webhooks** on all platforms to receive real-time updates for orders and stock changes. - **Use safety stock** to prevent overselling -- this reserves a buffer of stock that is not synced to external platforms. - **Review error listings** promptly -- listings with errors are not being kept in sync and may show outdated information to customers. - **Push stock after inventory changes** if webhooks are not configured, to keep external platforms up to date. - **Use pricing rules** instead of manual prices for automated price management across platforms. --- Source: https://directsale.ai/help/multichannel/connecting-channels # Connecting Sales Channels Before you can list and sell products on external platforms, you need to establish a connection between your DirectSale account and each e-commerce platform. This page covers how to add, test, manage, and delete platform connections. ## Accessing Connections Navigate to **Dashboard > Connections** from the sidebar. For Torob, open **Connections > Torob** instead of **New Connection**. The Torob workflow checks your published storefront and requires separate merchant registration with Torob. See [Selling Through Torob](https://directsale.ai/help/multichannel/torob). --- ## Adding a New Connection 1. Click the **New Connection** button in the top-right corner. 2. A dialog opens where you configure the connection. ### Step 1: Select a Platform Choose the e-commerce platform from the dropdown: | Platform | Description | |----------|-------------| | **WooCommerce** | WordPress-based e-commerce stores. | | **Shopify** | Hosted e-commerce platform. | | **PrestaShop** | Open-source PHP e-commerce solution. | | **OpenCart** | Open-source PHP shopping cart. | | **Amazon** | Amazon Seller marketplace. | | **eBay** | eBay online marketplace. | ### Step 2: Enter Connection Details All platforms require: | Field | Description | |-------|-------------| | **Connection Name** | A friendly name to identify this connection (e.g., "My Shopify Store", "US Amazon"). | | **Site URL** | The URL of your store (e.g., `https://mystore.com`). For Amazon, use `https://www.amazon.com`. For eBay, use `https://www.ebay.com`. | ### Step 3: Enter Platform Credentials Each platform requires different authentication credentials: #### WooCommerce | Field | Description | How to Obtain | |-------|-------------|---------------| | **Consumer Key** | API key for authentication. | In your WordPress admin, go to WooCommerce > Settings > Advanced > REST API. Create a new key with Read/Write permissions. | | **Consumer Secret** | API secret paired with the consumer key. | Generated alongside the Consumer Key. | > **Info:** WooCommerce API keys require your site to use HTTPS. The Consumer Key starts with `ck_` and the Consumer Secret starts with `cs_`. #### Shopify | Field | Description | How to Obtain | |-------|-------------|---------------| | **Access Token** | Admin API access token. | In your Shopify admin, go to Settings > Apps and Sales Channels > Develop Apps. Create an app and generate an Admin API access token with the required scopes (products, orders, inventory). | > **Info:** The Shopify access token starts with `shpat_`. Make sure you copy it when first generated, as it is only shown once. #### PrestaShop | Field | Description | How to Obtain | |-------|-------------|---------------| | **API Key** | Webservice API key. | In your PrestaShop admin, go to Advanced Parameters > Webservice. Enable the webservice and create a new API key with permissions for products, orders, stock, and categories. | #### OpenCart | Field | Description | How to Obtain | |-------|-------------|---------------| | **API Key** | REST API key. | In your OpenCart admin, go to System > Users > API. Create a new API user and note the API key. | #### Amazon (SP-API) Amazon requires several credentials from the Amazon Seller Partner API: | Field | Description | |-------|-------------| | **Region** | Select your selling region: North America, Europe, or Far East. | | **Marketplace ID** | The marketplace identifier (e.g., `ATVPDKIKX0DER` for US). | | **LWA Client ID** | Login with Amazon (LWA) client application ID. Starts with `amzn1.application-oa2-client.` | | **LWA Client Secret** | The client secret paired with your LWA Client ID. | | **LWA Refresh Token** | OAuth refresh token obtained through the SP-API authorization flow. | | **AWS Access Key ID** | IAM user access key for signing API requests. | | **AWS Secret Access Key** | IAM user secret key paired with the Access Key ID. | | **IAM Role ARN** | The ARN of the IAM role used for the SP-API. Starts with `arn:aws:iam::`. | | **Sandbox Mode** | Toggle on for testing against the Amazon sandbox environment (no real orders). | > **Warning:** Amazon SP-API setup is complex and requires an approved Amazon Developer account, a registered SP-API application, and properly configured IAM roles. Refer to Amazon's SP-API documentation for detailed setup instructions. #### eBay eBay supports two connection methods: **Method 1: OAuth Authorization (Recommended)** 1. Select the eBay marketplace (US, UK, Germany, Australia, Canada, France, Italy, or Spain). 2. Optionally toggle **Sandbox Mode** for testing. 3. If eBay global configuration is not set up by the platform admin, enter: - **App ID** (Client ID) - **Cert ID** (Client Secret) - **RuName** (Redirect URL Name from your eBay developer application) 4. Click the **Authorize with eBay** button. 5. A popup window opens where you log in to your eBay account and grant permissions. 6. Once authorized, the connection is created automatically. **Method 2: Manual Token Entry** 1. Enter your eBay application credentials (App ID, Cert ID). 2. Choose the token type: - **User Access Token** -- Short-lived token (expires in ~2 hours). Suitable for testing only. - **Refresh Token** -- Long-lived token for production use. 3. Paste the token value. 4. Click **Save Connection**. > **Info:** The OAuth method is recommended because it handles token refresh automatically. Manual user access tokens expire quickly and require frequent replacement. ### Step 4: Save the Connection Click **Save Connection** to create the connection. The system will attempt to validate your credentials. --- ## Testing a Connection After creating a connection, test it to verify that your credentials are valid and the platform is reachable. 1. Find the connection card on the Connections page. 2. Click the **Test** button. 3. The system sends a test request to the platform API. 4. If successful, the connection status updates to **Healthy** (green check icon). 5. If the test fails, the status updates to **Failed** (red X icon), and an error message is displayed. --- ## Connection Card Details Each connection is displayed as a card showing: | Field | Description | |-------|-------------| | **Name** | The connection name you provided. | | **Platform** | The e-commerce platform (with platform icon). | | **Site URL** | The store URL. | | **Status** | Healthy (green check), Failed (red X), or Unknown (gray circle). | | **Products** | Total number of products synced through this connection. | | **Last Sync** | When the last synchronization was performed. | --- ## Sync Options Click the **Sync** button on a connection card to open the sync modal. Sync operations let you transfer data between your catalog and the connected platform. When the connection offers **Reconcile catalog**, use it to review mappings, imports and supported publications before choosing a catalog source of truth. See [Reconcile a Marketplace Catalog](https://directsale.ai/help/multichannel/reconciliation). ### Sync Settings Each connection has configurable sync settings that control what data is synchronized: | Setting | Description | |---------|-------------| | **Update Price** | Push price changes to the external platform. | | **Update Stock** | Push stock quantity changes to the external platform. | | **Update Description** | Push product description changes to the external platform. | | **Update Images** | Push product image changes to the external platform. | | **Update Category** | Push category changes to the external platform. | | **Add New Products** | Automatically create new products on the external platform when they are added to your catalog. | --- ## eBay-Specific Features eBay connections have additional management features: | Action | Description | |--------|-------------| | **Sync Policies** | Fetches your eBay business policies (fulfillment, payment, return) and stores them locally. Required for creating eBay listings. | | **Create Policies** | Creates default business policies on eBay if they do not already exist. | | **eBay Settings** | Opens the eBay-specific settings page for advanced configuration. | > **Info:** eBay requires business policies (fulfillment, payment, and return policies) to be configured before you can create listings. Use the Sync Policies and Create Policies buttons to set these up. --- ## Deleting a Connection 1. Click the **Delete** (trash icon) button on the connection card. 2. Confirm the deletion when prompted. 3. The connection and all its configuration are permanently removed. > **Warning:** Deleting a connection does not remove the products from the external platform. It only removes the connection from your dashboard. Existing listings on the platform will remain but will no longer be managed or synced. --- ## Troubleshooting | Issue | Solution | |-------|----------| | Connection test fails | Verify your credentials are correct and have not expired. Check that the store URL is accessible. | | WooCommerce: "Consumer key is invalid" | Regenerate the API keys in WooCommerce > Settings > Advanced > REST API. Ensure the key has Read/Write permissions. | | Shopify: "Unauthorized" | The access token may have been revoked. Generate a new token in Shopify admin. | | Amazon: "Access denied" | Verify IAM role permissions and that your SP-API application is properly registered. | | eBay: "Token expired" | If using a User Access Token, it expires in ~2 hours. Switch to OAuth authorization for automatic refresh. | | Connection shows "Failed" status | Test the connection to see the specific error. Common causes include expired tokens, changed passwords, or network issues. | | Cannot create eBay listings | Make sure business policies are configured. Use the **Sync Policies** or **Create Policies** buttons. | --- Source: https://directsale.ai/help/multichannel/torob # Selling Through Torob Torob can discover eligible products on your published storefront after you register your shop with Torob. Customers who follow a Torob listing complete their purchase on your own storefront. The DirectSale **Torob** page helps you prepare and check your store; a green readiness check or an enabled API does not mean Torob has reviewed or connected your shop. ## Find the Torob page Open **Dashboard > Connections > Torob**. This option appears under Sales Channels only when your store currency is **IRR (rial)** or **IRT (toman)**. The older Storefront > Torob address redirects to this page. If the option is missing, check the store currency in your tenant settings; changing the panel display language does not enable Torob. Torob is separate from the **New Connection** form used for other commerce platforms. You do not import a Torob catalog into DirectSale here. Maintain products in DirectSale and publish a working storefront before requesting Torob's review. ## Check storefront readiness Select **Check again** on the Torob page after changing products, domain or publication settings. Review the displayed checks: - **Store domain:** the domain must be verified and the storefront published. Open Domain settings to resolve this first. - **Products:** review active products, products with an effective positive price, and products that are priced and available for sale. Confirm stock and prices on the public product page and in checkout. - **Images:** the page checks a sample of up to 50 recently available products for missing image references. A clean sample does not prove every product image is reachable or meets Torob's requirements. - **Currency:** verify the store's selling currency. Separately choose whether the **stored price numbers** represent rial or toman before enabling the product API. Prepare any merchant verification required by Torob, including Enamad where applicable. DirectSale does not verify Enamad or Torob approval on this page. ## Register the shop and enable the product API 1. Publish the storefront on its verified domain and review several public product pages, prices, stock values and checkout. 2. Use **Register with Torob** on the Torob page and complete Torob's own merchant registration and review. Saving settings in DirectSale does not register or approve the shop in Torob. 3. In **Torob Product API v3**, select the unit of stored price numbers: **Rial** or **Toman**. The API returns prices to Torob in whole toman. Check this choice against real product prices before saving. 4. When the storefront and checkout are ready, select **Enable Torob product API** and **Save settings**. Copy the displayed API URL and give it to Torob support when direct API integration has been agreed. Treat Torob's confirmation, not the DirectSale switch, as the connection status. Automatic product-update webhooks are not active in this workflow. Torob registration, approval and any token it issues remain separate from the DirectSale readiness checks. Do not post API credentials in product descriptions or Help requests. ## Set Torob prices The **Price change for Torob visitors (%)** setting applies store-wide. Enter a whole number from **-99** to **1000**: a positive value raises the price and a negative value lowers it. Zero leaves the effective catalog price unchanged. Review the resulting amount before saving, especially when a product has a sale price, variant or sale unit. Once the Torob API is enabled, open **Dashboard > Products** and use a product's **Product marketplaces** control to include or exclude it from Torob. Each included product inherits the store-wide percentage unless you save its own percentage; **Use store-wide Torob adjustment** removes that override. Only active destinations appear in this control. Excluding a product prevents it from being returned by the Torob product API. The adjustment applies to Torob listing links and items added to the cart through those links. Ordinary storefront visits use the normal catalog price. The product page, cart and checkout recalculate the Torob price; a changed adjustment or excluded product can require the customer to refresh the cart. A Torob link can be shared, so this is a public channel price rather than a private coupon. ## Verify and troubleshoot After saving, reopen the Torob page and confirm the selected price unit, API setting and percentage. Compare a small sample of product prices and stock across the public page, Torob-linked page, cart and checkout. Ask Torob to confirm that it has accepted the shop and the API URL; the DirectSale page cannot show external approval. If Torob is not visible, check that the store currency is IRR or IRT. If saving fails, check publication, domain, checkout and the chosen stored-price unit. If a product is missing, check its active status, price, stock, image and **Show product** switch. If the page reports that self-hosted storefront sync is pending, resolve that sync before relying on the public listing. Avoid changing the rial/toman interpretation just to make a failed check pass: that can make every exported price incorrect. For the current direct API format and image guidance, see [Torob's integration documentation](https://github.com/Torob/Torob-Sync). Torob's merchant review and support remain the authority on whether your shop is connected. --- Source: https://directsale.ai/help/multichannel/listings # Managing Listings The Listings page lets you view, filter, and manage all your product listings across connected e-commerce platforms. From here you can edit pricing, push updates to external platforms, and perform bulk operations on multiple listings at once. ## Accessing Listings Navigate to **Dashboard > Multichannel > Listings** from the tab bar. --- ## Listings Table Each listing in the table represents a product from your catalog that has been linked to an external platform. The table shows: | Column | Description | |--------|-------------| | **Checkbox** | Select individual listings for bulk operations. | | **Product** | Product name and SKU, along with a thumbnail image. The name shown is the platform title if set, otherwise the original product name. | | **Platform** | A color-coded badge indicating which platform this listing belongs to (WooCommerce, Shopify, etc.). | | **External ID** | The product ID on the external platform. Displayed as a monospace string. Empty if the product has not been pushed yet. | | **Pricing** | The current platform price. Click to edit pricing settings. Shows the pricing rule indicator (e.g., "+15%" for markup) and a strikethrough base price if the platform price differs from the catalog price. | | **Stock** | The stock quantity visible on the platform. Shows "override" if a manual stock override is set, or a safety stock deduction indicator if safety stock is configured. | | **Sync** | Current sync status with a colored icon and any error message. | | **Last Synced** | The date of the most recent successful sync. Shows "Never" if the listing has not been synced. | | **Actions** | Push product, push price, and external link buttons. | ### Sync Status Icons | Status | Icon | Color | Description | |--------|------|-------|-------------| | **Synced** | Checkmark | Green | The listing is up to date on the external platform. | | **Error** | Warning triangle | Red | The last sync attempt failed. Check the error message. | | **Pending** | Clock | Yellow | The listing is waiting to be synced. | | **Paused** | X circle | Gray | Syncing is paused for this listing. | --- ## Filtering Listings Use the filter bar at the top to narrow down listings: | Filter | Description | |--------|-------------| | **Search** | Search by product name, SKU, platform SKU, or platform title. | | **Connection** | Filter by a specific platform connection. | | **Sync Status** | Filter by sync status: All, Synced, Pending, Error, or Paused. | | **Platform** | Filter by platform type: WooCommerce, Shopify, PrestaShop, OpenCart, Amazon, or eBay. | Click the **Clear** button to reset all filters. --- ## Adding Products to a Platform 1. Click the **Add Products** button in the top-right corner of the Listings page. 2. You are taken to the Add Listings page (described in detail below). ### Add Listings Workflow The Add Listings page follows a three-step process: #### Step 1: Select a Platform 1. Choose the target platform connection from the dropdown. 2. Only active connections are listed. 3. The connection's site URL is displayed for reference. > **Info:** If no connections are available, you need to set up a platform connection first. Click **Connect Store** to navigate to the Connections page. #### Step 2: Select Products A table of your catalog products is displayed. For each product: - Products already listed on the selected platform show a **Listed** badge and cannot be selected again. Click on them to edit their listing settings. - Products not yet listed show a checkbox. Click to select them. Table columns include: | Column | Description | |--------|-------------| | **Checkbox** | Select/deselect the product. Already-listed products show an edit (pencil) icon instead. | | **Product** | Product name and thumbnail. | | **SKU** | Product SKU. | | **Price** | Catalog price. If a sale price is set, both prices are shown with the original price crossed out. | | **Stock** | Current stock quantity. Low stock (fewer than 5) is shown in orange, out of stock (0) in red. | | **Category** | Product category. | | **Status** | Whether the product is listed or not on the selected platform. Listed products also show their pricing rule and platform price. | Use the **Search** field to filter products by name. Click column headers (Product, SKU, Price, Stock) to sort the table. Selection controls: - **Select Page** / **Deselect Page** -- Select or deselect all unlisted products on the current page. - **Select All** -- Select all unlisted products across all pages. - **Clear Selection** -- Deselect all products. #### Step 3: Configure Pricing and Push After selecting products, a configuration card appears: 1. **Pricing Rule** -- Choose how prices are calculated for the external platform: | Rule | Description | Example | |------|-------------|---------| | **Manual** | Use the catalog price or set a custom platform price. | Catalog price: $20.00 -- Platform price: $20.00. | | **Markup Percent** | Add a percentage on top of the base price. | Base $20.00 + 15% = $23.00. | | **Markup Fixed** | Add a fixed amount on top of the base price. | Base $20.00 + $2.50 = $22.50. | | **Margin Target** | Calculate price to achieve a target profit margin. Requires cost price. | Cost $10.00 at 30% margin = $14.29. | > **Warning:** The **Margin Target** rule requires products to have a cost price set. Products without a cost price will default to using the base catalog price. 2. **Safety Stock** -- A stock buffer subtracted from the quantity sent to the platform. For example, if your actual stock is 100 and safety stock is 5, the platform will show 95 units available. 3. **Push Immediately** -- When checked, products are both created as local listings and immediately pushed to the external platform. When unchecked, listings are created locally only and can be pushed later. 4. Click **Create & Push** (or **Create Listing** if not pushing immediately) to proceed. A results summary shows: - Number of successfully created listings. - Number of failed listings with error messages. --- ## Editing Listing Pricing Click the **Pricing** cell on any listing row to open the pricing editor modal. The modal shows: - **Base Price** -- The product's catalog price (read-only reference). - **Current Stock** -- The product's current stock level (read-only reference). - **Pricing Rule** -- Select from Manual, Markup Percent, Markup Fixed, or Margin Target. - **Value** -- Enter the pricing value (percentage, fixed amount, or target margin depending on the rule). - **Safety Stock** -- Buffer stock to withhold from the platform. - **Calculated Price** -- A preview of the resulting platform price based on the selected rule and value. Click **Save & Recalculate** to save the pricing configuration. The platform price is recalculated automatically based on your rule. --- ## Per-Listing Actions Each listing row has action buttons: | Action | Icon | Description | |--------|------|-------------| | **Push Product** | Upload icon | Pushes the full product data (title, description, images, price, stock) to the external platform. Creates the product on the platform if it does not exist yet. | | **Push Price** | Send icon | Pushes only the current price to the external platform. Available only for listings that already have an external ID. | | **External Link** | External link icon | Opens the product page on the external platform in a new tab. Only available for listings with a platform URL. | --- ## Bulk Operations Select multiple listings using the checkboxes to activate the bulk actions bar. ### Selecting Listings - Click individual checkboxes to select specific listings. - Click the header checkbox to select/deselect all listings on the current page. ### Available Bulk Actions | Action | Description | |--------|-------------| | **Push Product** | Push full product data for all selected listings to their respective platforms. | | **Push Stock** | Push only stock quantities for all selected listings. | | **Push Price** | Push only prices for all selected listings. | | **Delete** | Remove all selected listings. This deletes the local listing record but does not remove the product from the external platform. | 1. Select the listings you want to act on. 2. Choose a bulk action from the dropdown. 3. Click **Apply** to execute the action. 4. Click **Clear** to deselect all and close the bulk actions bar. > **Warning:** Bulk delete removes the listing records from your dashboard. The products will remain on the external platform but will no longer be managed or synced through DirectSale. --- ## Pagination Listings are displayed 20 per page. Use the pagination controls at the bottom of the table to navigate between pages. --- ## Troubleshooting | Issue | Solution | |-------|----------| | Product shows "pending" sync status | The listing has not been pushed to the platform yet. Use the Push Product action. | | Push fails with an error | Check the connection health on the Connections page. Verify credentials are still valid. | | Price not updating on external platform | Make sure you are using **Push Price**, not just saving the pricing rule. Saving updates the local configuration; pushing sends it to the platform. | | Stock shows "override" | A manual stock override is set for this listing. The actual catalog stock is not being used. | | Cannot select a product for listing | The product is already listed on the selected platform. Click on it to edit the existing listing instead. | | Safety stock not working | Safety stock is subtracted from the quantity when pushing to the platform. Verify the safety stock value in the listing's pricing editor. | --- Source: https://directsale.ai/help/multichannel/sync # Stock & Price Synchronization Synchronization keeps your product data, stock levels, and prices consistent across all connected e-commerce platforms. This page explains how sync works, the different sync types, pricing rules, and how to monitor sync operations. ## How Sync Works Synchronization can happen in two directions: | Direction | Description | |-----------|-------------| | **Push** | Data flows from your DirectSale catalog out to the connected external platform. For example, pushing stock updates your WooCommerce store with the latest quantities from your catalog. | | **Pull** | Data flows from the external platform into DirectSale. For example, pulling orders imports new orders placed on Shopify into your dashboard. | ### Sync Triggers Sync can be triggered in three ways: 1. **Manual** -- Click the Sync button on a platform card in the Multichannel Overview, or use per-listing push actions. 2. **Bulk** -- Use the Push Stock or Push Prices buttons on a platform card to update all listings at once. 3. **Webhook** -- When webhooks are registered, the external platform automatically notifies your system of changes (new orders, stock updates, etc.). > **Info:** Webhooks provide near-real-time synchronization. Without webhooks, you rely on manual syncs or scheduled operations to keep data current. --- ## Sync Types ### Full Sync A full sync, triggered by the **Sync** button on a platform card, performs multiple operations at once: - **Sync Stock** -- Pushes current stock quantities to the external platform. - **Sync Prices** -- Pushes current prices (respecting pricing rules) to the external platform. - **Pull Orders** -- Imports new orders from the external platform. ### Push Stock Pushes only stock quantities to the external platform. Useful after bulk inventory updates. - Available per-listing (Push Product action) or as a bulk operation across all listings on a connection (Push Stock button on the platform card). - Safety stock is automatically subtracted before pushing. ### Push Prices Pushes only pricing information to the external platform. Useful after updating pricing rules or catalog prices. - Available per-listing (Push Price action) or as a bulk operation (Push Prices button on the platform card). - Platform prices are recalculated based on the configured pricing rule before pushing. ### Push Product Pushes the complete product data to the external platform, including: - Product title and description - Images - Price - Stock quantity - Other product attributes If the product does not exist on the external platform yet, it is created. If it already exists (has an external listing ID), it is updated. --- ## Pricing Rules Each listing can have a pricing rule that determines how the platform price is calculated from your catalog price. ### Available Rules | Rule | Input | Calculation | Example | |------|-------|-------------|---------| | **Manual** | Custom price | The platform price is set directly. If no custom price is entered, the catalog price is used. | Catalog: $50.00, Manual: $45.00 -- Platform shows $45.00. | | **Markup Percent** | Percentage value | Platform Price = Base Price x (1 + Markup%). | Base: $50.00, Markup: 20% -- Platform: $60.00. | | **Markup Fixed** | Fixed amount | Platform Price = Base Price + Fixed Amount. | Base: $50.00, Fixed: $5.00 -- Platform: $55.00. | | **Margin Target** | Target margin % | Platform Price = Cost Price / (1 - Margin%). Requires cost price. | Cost: $30.00, Target Margin: 40% -- Platform: $50.00. | ### Pricing Rule Priority 1. If a listing has a **pricing rule** configured, the platform price is calculated using that rule. 2. If the rule is **manual** and a custom platform price is set, that price is used. 3. If no rule or custom price is set, the catalog base price is used. > **Warning:** The **Margin Target** rule requires each product to have a **cost price** set in your catalog. If a product has no cost price (or it is zero), the calculation cannot determine the correct price and will fall back to the base catalog price. ### Setting Pricing Rules Pricing rules can be set at two levels: 1. **Bulk (at listing creation)** -- When adding products to a platform via the Add Listings page, you set a pricing rule that applies to all selected products. 2. **Per-listing** -- Click the pricing cell on any listing row in the Listings table to open the pricing editor and set a rule for that specific listing. --- ## Safety Stock Safety stock is a reserve buffer that prevents overselling. When stock is pushed to an external platform, the safety stock quantity is subtracted from your actual stock. **Example:** - Actual stock: 100 units - Safety stock: 10 units - Stock shown on external platform: 90 units This ensures you always have a buffer to handle orders from other channels or unexpected demand. Safety stock is configured: - Per-listing in the pricing editor modal. - In bulk when creating new listings on the Add Listings page. --- ## Stock Override A stock override forces a specific stock quantity to be shown on the external platform, regardless of your actual catalog stock. When a stock override is set, the actual stock and safety stock are ignored for that listing. --- ## Sync Logs Navigate to **Dashboard > Multichannel > Sync Logs** to view a history of all sync operations. Each log entry shows: | Column | Description | |--------|-------------| | **Type** | The kind of sync operation (e.g., stock_push, price_push, product_sync, order_pull). | | **Direction** | Whether data was pushed (outgoing) or pulled (incoming). | | **Platform** | The platform and connection name associated with this sync. | | **Status** | The result: completed, failed, processing, pending, or partial. | | **Items** | The number of items processed. Shows succeeded/total, with failed items highlighted. | | **Time** | When the sync operation started and completed. | ### Sync Log Statuses | Status | Description | |--------|-------------| | **Completed** | All items in the sync operation succeeded. | | **Partial** | Some items succeeded but some failed. Review failed items for errors. | | **Failed** | The entire sync operation failed. Check the error details. | | **Processing** | The sync is currently in progress. | | **Pending** | The sync is queued and waiting to begin. | --- ## Stock History Navigate to **Dashboard > Multichannel > Stock History** to view a chronological log of stock level changes across your listings. This page helps you track: - When stock was pushed to external platforms. - Stock quantity changes over time. - Discrepancies between your catalog stock and platform stock. --- ## Webhooks Webhooks enable real-time communication between external platforms and your DirectSale account. ### Registering Webhooks 1. Go to the **Multichannel Overview**. 2. Find the platform card. 3. Click the **Webhook** (hook icon) button. 4. The system registers the necessary webhook endpoints with the external platform. ### What Webhooks Do When registered, the external platform sends notifications to your system when: - A new order is placed. - Stock levels change. - Product data is updated. - An order is canceled or refunded. This eliminates the need for manual syncs and ensures your data stays current in near-real-time. > **Info:** Not all platforms support the same set of webhook events. The system automatically registers all available events for each platform type. --- ## Best Practices - **Register webhooks** on all platforms for real-time updates, minimizing the need for manual syncs. - **Use pricing rules** instead of manually setting prices to automate price management across platforms. - **Set safety stock** to prevent overselling, especially if you sell on multiple platforms simultaneously. - **Review sync logs regularly** to catch and resolve errors before they impact customer experience. - **Push stock after inventory adjustments** to keep external platforms accurate, especially if webhooks are not configured. - **Test connections** periodically to ensure credentials have not expired. ## Troubleshooting | Issue | Solution | |-------|----------| | Sync shows "failed" status | Check the connection health. Verify that credentials are valid and the store is online. | | Stock not updating on platform | Ensure you triggered a stock push (not just saved pricing). Check safety stock is not reducing the quantity to zero. | | Price different from expected | Verify the pricing rule configuration. Check if a manual platform price is overriding the calculated price. | | Webhooks not receiving events | Re-register webhooks. Verify the external platform's webhook configuration page shows the webhook as active. | | Partial sync with failures | Review the failed items in the sync log. Common causes include invalid product data, missing required fields on the platform, or rate limiting. | --- Source: https://directsale.ai/help/multichannel/analytics # Channel Performance Analytics The Multichannel Analytics page provides insights into your sales performance across all connected platforms, including revenue by source, sync health, top-selling products, and recent sync activity. ## Accessing Analytics Navigate to **Dashboard > Multichannel**, then click the **Analytics** quick action card. Alternatively, click the back arrow on the Analytics page to return to the Multichannel Overview. --- ## Time Period Selection Use the dropdown in the top-right corner to select a reporting period: | Period | Description | |--------|-------------| | **Last 7 Days** | Data from the past week. | | **Last 30 Days** | Data from the past month. Default selection. | | **Last 90 Days** | Data from the past quarter. | | **Last Year** | Data from the past 12 months. | All metrics and charts refresh automatically when you change the period. --- ## Summary Cards Four cards at the top provide a high-level snapshot: | Card | Description | |------|-------------| | **Total Revenue** | The combined revenue from all sales sources in the selected period. Formatted according to your currency settings. | | **Total Orders** | The total number of orders received across all channels. | | **Active Listings** | The total number of product listings currently managed across all platforms. | | **Sync Success Rate** | The percentage of successful sync operations. A high rate indicates healthy connectivity with your external platforms. | --- ## Revenue by Platform A horizontal bar chart shows revenue contribution from each sales source. Revenue sources include: | Source | Description | |--------|-------------| | **Chatbot** | Sales originating from AI chatbot conversations. | | **Storefront** | Sales from your DirectSale storefront/website. | | **Shopify** | Sales from connected Shopify stores. | | **WooCommerce** | Sales from connected WooCommerce stores. | | **PrestaShop** | Sales from connected PrestaShop stores. | | **OpenCart** | Sales from connected OpenCart stores. | | **Amazon** | Sales from connected Amazon listings. | | **eBay** | Sales from connected eBay listings. | | **API** | Sales processed through the API. | Each bar is color-coded by source and shows: - The revenue amount within the bar. - The number of orders on the right side. > **Info:** If a source shows no revenue data, it means no orders were recorded from that channel during the selected period. This does not necessarily indicate a problem -- the channel may simply not have received orders. --- ## Sync Health The Sync Health card provides a grid view of your listings' synchronization status: | Metric | Color | Description | |--------|-------|-------------| | **Synced** | Green | Listings that are successfully synchronized with their external platforms. | | **Errors** | Red | Listings that have encountered sync errors. These need attention. | | **Pending** | Yellow | Listings that are waiting to be synced for the first time. | | **Total** | Blue | The total number of listings being managed. | ### Listings by Platform Below the health grid, a breakdown shows how many listings belong to each connected platform/connection. --- ## Top Selling Products A table lists the best-performing products across all channels: | Column | Description | |--------|-------------| | **Product** | Product name, image thumbnail, and SKU. | | **Units Sold** | Total quantity sold across all channels during the selected period. | | **Revenue** | Total revenue generated by this product. | | **Orders** | Number of individual orders containing this product. | > **Info:** Use this data to identify your best-selling products. Products with high visibility but low sales may need pricing adjustments, better descriptions, or improved images on their external platform listings. --- ## Recent Sync Activity A timeline list shows the most recent sync operations: Each entry shows: - A colored **status dot** indicating the result (green = completed, red = failed, yellow = partial, gray = other). - The **sync type** and associated **platform/connection name**. - **Succeeded items** (in green) and **failed items** (in red) if applicable. - The **timestamp** of when the sync started. This section gives you a quick view of recent sync activity without navigating to the full Sync Logs page. --- ## Understanding Your Data ### Revenue Attribution Revenue is attributed to the source where the order originated. For example: - An order placed on your Shopify store counts as Shopify revenue. - An order placed through the chatbot counts as Chatbot revenue. - An order placed on Amazon counts as Amazon revenue. ### Sync Success Rate The sync success rate is calculated as: **Synced Listings / Total Listings x 100** A rate below 90% may indicate connectivity issues or product data problems that should be investigated. --- ## Best Practices - **Check analytics weekly** to track revenue trends across platforms and identify underperforming channels. - **Investigate low sync success rates** -- a drop below 90% usually indicates credential issues, API changes, or data problems. - **Compare revenue by platform** to focus marketing and inventory efforts on your highest-performing channels. - **Use top products data** to optimize listings -- ensure your best sellers have the best titles, images, and descriptions on each platform. - **Monitor recent sync activity** to catch failures early. A string of failed syncs may indicate a connection problem that needs immediate attention. - **Review longer time periods** (90 days, 1 year) to identify seasonal trends and plan inventory accordingly. --- Source: https://directsale.ai/help/multichannel/marketplace # Marketplace Products and Orders The **Marketplace** page manages supported marketplace connections and their products. It complements Multichannel listings and is not the same as Linked Stores between DirectSale tenants. ## Before you start Connect the intended marketplace in **Connections** and confirm it is healthy. Check product identifiers, stock and pricing. Marketplace publication can create a live external listing; review its commercial details and marketplace requirements before submitting it. ## Daily workflow 1. Open Marketplace and select the correct connection. 2. Load its products and review listing status, stock and prices. 3. Use **Sync orders** to retrieve supported marketplace orders; check the resulting count and recent orders. 4. Use the stock-sync action to send the relevant stock updates. 5. Edit a product's marketplace price with its price action, then verify it at the marketplace. 6. Use the listing-status control only when you intend to change public availability. 7. For eBay where offered, open the product catalog, choose a product and use the publication action after reviewing its data. Selecting a product is not the same as publishing it. A parent product's presence does not prove all variants are available. Some operations are provider-specific; an eBay action should not be assumed available on every marketplace. ## Verify and troubleshoot Check the selected connection before every write. Compare a sample order number, variant SKU, available quantity and published price with the external account. If publication fails, inspect missing required product fields, permissions, connection status and the exact provider error. Correct the issue before retrying. Do not create a duplicate local order just because sync is delayed. Use [Sync Logs and Stock History](https://directsale.ai/help/multichannel/sync) and [Listing Management](https://directsale.ai/help/multichannel/listings) for investigation. For internal tenant networks, use [Linked Stores](https://directsale.ai/help/multichannel/linked-stores). --- Source: https://directsale.ai/help/multichannel/reconciliation # Reconcile a Marketplace Catalog Use the reconciliation page from **Dashboard > Connections** when products in a connected marketplace and products in DirectSale need to be matched, imported or published. Reconciliation is a reviewed write operation; loading its preview does not change either catalog. ## Review the preview Select the intended connection and open its reconciliation action. The page groups records into marketplace-only products, matched products and panel-only products. Automatic suggestions can use SKU or name, but you must review every proposed match. Do not match two different variants merely because their names are similar. Compare SKU, variant attributes, identifiers, price and the actual marketplace listing before confirming. ## Choose the catalog policy The selected policy controls which side is allowed to create or update records. Available operations depend on the marketplace: - Map an external product to an existing DirectSale product - Import an eligible external product into DirectSale - Publish an eligible panel-only product where the provider supports publication - Apply the selected field synchronization policy to mapped products An unavailable checkbox means that operation or required product data is not supported. For example, publication from this screen can be provider-specific. Do not interpret an absent external record as proof that a live listing was removed; some provider APIs return only part of a catalog. ## Confirm safely 1. Resolve duplicate or incorrect mappings. 2. Select only the imports or publications you intend to create. 3. Review the acknowledgment describing the source of truth and field changes. 4. Complete any marketplace-specific catalog acknowledgment shown on the page. 5. Select **Confirm** once and wait for the result. After confirmation, reload the connection and verify representative products on both sides. Check SKU, variants, listing status, stock and price. Use [Sync Logs and Stock History](https://directsale.ai/help/multichannel/sync) to investigate failures and [Marketplace Products and Orders](https://directsale.ai/help/multichannel/marketplace) for routine operations. --- Source: https://directsale.ai/help/app-store/index # App Store The App Store is the central tenant catalog for connected integrations and storefront templates. Internal tooling also models an App Store-managed local lifecycle, but local plugins remain Draft/internal until a runtime consumer is registered. Current built-in catalog entries use linked integration or storefront-template lifecycles. ## App Lifecycles | Lifecycle | How it works | | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Linked integration** | Opens the capability's dedicated Channels, Checkout, Connections, Shipping, Storefront Integrations, or Search Console page. Credentials stay in that service and the App Store reads its real connection state. | | **Local app** | Tooling supports install/configuration metadata for internal development, but tenant-catalog publication is blocked until the plugin has a registered runtime consumer. | | **Storefront template** | Installed and activated by the App Store, which also keeps the tenant's selected storefront theme synchronized and applies a safe fallback when needed. | > **Warning:** A module reference alone does not make a local plugin operational. Keep it in Draft until its runtime consumer is registered; otherwise installation would create catalog state without enabling any product capability. ## Accessing the App Store Navigate to **Dashboard > App Store** from the sidebar. --- ## Browsing Apps The App Store main page displays all available apps in a searchable, filterable grid. ### Search Use the search field at the top to find apps by name or keyword. Search results update automatically with a slight delay as you type (debounced for performance). ### Type Filter Filter apps by their type using the toggle buttons: | Type | Description | | ------------ | --------------------------------------------------------------------------------------------------------------- | | **All** | Show all app types. | | **Plugin** | Functional extensions that add features (e.g., payment gateways, shipping calculators, analytics integrations). | | **Template** | Storefront themes and design templates for your website. | ### Sort Options Sort the app grid by: | Sort | Description | | ----------- | ------------------------------------------- | | **Popular** | Most installed/popular apps first. Default. | | **Newest** | Most recently published apps first. | | **Name** | Alphabetical order by app name. | | **Price** | Sorted by price (lowest first). | ### Category Filter Below the search bar, a category filter lets you browse apps by functional category. Categories may include: | Category | Icon | Description | | --------------- | ------- | ------------------------------------------ | | **Messaging** | Chat | Messaging platform integrations and tools. | | **Payment** | Card | Payment gateway integrations. | | **SEO** | Search | Search engine and indexing integrations. | | **Analytics** | Chart | Analytics and reporting tools. | | **E-commerce** | Cart | E-commerce enhancements and tools. | | **Marketplace** | Store | Marketplace integrations. | | **Shipping** | Package | Shipping and fulfillment integrations. | | **Template** | Palette | Storefront themes and design templates. | Each category shows a count of available apps. Click a category to filter; click it again to clear the filter. --- ## App Cards Each app is displayed as a card showing: - **Icon** -- The app's logo or a category-based default icon. - **Name** -- The app's name. - **Short Description** -- A brief summary of what the app does. - **Pricing Badge** -- Shows whether the app is free, has a one-time price, or requires a subscription. - **Category** -- The functional category the app belongs to. Click an app card to view its detail page. --- ## Bundles Section When browsing without a category or search filter, a **Bundles** section appears at the top of the page. Bundle members must have an operational App Store-managed runtime; current built-ins therefore allow storefront templates, while linked integrations stay individually configured and unregistered local plugins remain Draft/internal. See the [Bundles](https://directsale.ai/help/app-store/bundles) page for details. --- ## Pagination Apps are displayed 18 per page. Use the **Previous** and **Next** buttons at the bottom to navigate between pages. The current page number and total pages are shown between the buttons. --- ## Pricing Models Apps in the store can have different pricing models. Paid installation stays disabled until App Store checkout is available; a price badge never means an app can be activated without payment. Published App Store-managed templates, local plugins, and bundles cannot use a minimum **Required Plan** until runtime downgrade enforcement is available. Draft records may retain that metadata. Linked destinations enforce their own plan access rules. | Model | Description | | ------------------------------- | ----------------------------------------------------------------------------------------- | | **Free** | No cost to install and use. | | **One-Time** | Pay once for permanent access. | | **Monthly/Yearly Subscription** | Recurring payment for continued access. | | **Included in Plan** | Some apps may be free if your subscription plan includes them (shown as "Free via Plan"). | > **Info:** Some apps that normally require payment may be included for free with certain subscription plans. Check the pricing badge for a "Free via Plan" indicator. --- ## Best Practices - **Start with free apps** to explore what extensions are available before committing to paid ones. - **Read the full description** on the app detail page before installing to understand requirements and capabilities. - **Check compatibility** -- linked destinations may enforce subscription access, and App Store-managed items may require other apps to be installed first. - **Review bundle requirements** before installing -- external dependencies and required configuration defaults must be satisfied. - **Use categories** to quickly find apps relevant to your needs rather than scrolling through the entire catalog. --- Source: https://directsale.ai/help/app-store/installing-apps # Installing & Managing Apps This page covers all three App Store lifecycles: linked integrations managed on dedicated settings pages, local apps managed by the App Store, and storefront templates synchronized with storefront design. ## App Detail Page Click any app card in the App Store to open its detail page. ### Hero Section The top of the detail page shows: | Element | Description | | --------------------- | ---------------------------------------------------------------------------------------------------------------- | | **Icon** | The app's logo or a category-based default icon. | | **Name** | The app's name. | | **Developer** | The developer or company that created the app. | | **Version** | The current version of the app. | | **Pricing Badge** | Shows the pricing model (Free, one-time cost, subscription, or included in plan). | | **Category** | The app's functional category. | | **Type Badge** | If the app is a template, a "Template" badge is displayed. | | **Short Description** | A brief summary of the app's purpose. | | **Action Button** | Opens the dedicated setup page for a linked integration, or installs/manages a local app or storefront template. | ### Tabs The detail page has up to three tabs: | Tab | Description | | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Overview** | The full description of the app, along with a sidebar showing developer info, version, website link, tags, and bundle information. | | **Screenshots** | App screenshots displayed in a grid. Only shown if the app has screenshots. | | **Configuration** | Non-sensitive local-app or template settings when the listing provides a configuration schema. For a required schema, this tab is also the pre-install form. Integration credentials are never stored here. | --- ## Configuring a Connected Integration 1. Navigate to the integration detail page. 2. Click **Configure** or **Manage**. 3. Complete setup on the dedicated Channels, Checkout, Connections, Shipping, Storefront Integrations, or Search Console page. 4. The App Store reads the real connection status and shows Active or Configured. > **Info:** API keys, tokens, passwords, and private keys are stored only by the dedicated encrypted integration service. App Store configuration rejects sensitive fields. --- ## Installing a Local App > **Warning:** Local-plugin lifecycle tooling is currently for Draft/internal development. A local plugin is not published to the tenant catalog until a registered runtime consumer can enforce its activation state. 1. Open the local app's detail page. 2. Review its app dependencies. A minimum Required Plan is not available for a published App Store-managed item until runtime downgrade enforcement is implemented. 3. If configuration is required, open **Configuration**, complete the non-sensitive required fields, and save. Saving this pre-install form installs the app with that configuration. 4. If no pre-install configuration is required, click **Install**. 5. Use the App Store to update configuration, activate or deactivate the app, or uninstall it. > **Warning:** Never put API keys, access tokens, passwords, private keys, or other credentials in a local App Store schema. Sensitive integrations belong on their dedicated encrypted setup page. --- ## Activating a Storefront Template 1. Open a template detail page. 2. Complete the **Configuration** tab first if the template requires non-sensitive pre-install fields. 3. Click **Install** or **Activate** (or save the required pre-install form). 4. The template becomes the tenant's active Storefront theme and other App Store templates become inactive. 5. Deactivating or uninstalling the current template safely falls back to another installed template or Modern. --- ## Managing Installed Apps ### Accessing Installed Apps Navigate to **Dashboard > App Store > Installed** to see all apps currently installed on your account. The installed apps page shows: - The total count of installed apps. - A link to **Browse** more apps in the store. ### Installed App Cards Each installed app is displayed as a row showing: | Element | Description | | --------------------- | ----------------------------------------------------------------------- | | **Icon** | The app's logo or a category-based default icon. | | **Name** | Clickable -- opens the app's detail page. | | **Status Badge** | Shows whether the app is **active** (green) or **inactive** (gray). | | **Short Description** | A brief summary of the app. | | **Pricing Badge** | The pricing model and whether it is free via your plan. | | **Bundle Name** | If the app was installed as part of a bundle, the bundle name is shown. | ### Action Buttons Actions depend on lifecycle type: | Button | Icon | Description | | -------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------- | | **Manage integration** | Gear icon | Opens the dedicated settings page. Enable, disable, or disconnect the integration there. | | **Configure local app/template** | Gear icon | Opens its detail and non-sensitive Configuration tab. | | **Toggle local app/template** | Power icon | Activates or deactivates an App Store-managed item. Template changes also synchronize the storefront theme. | | **Uninstall local app/template** | Trash icon | Removes its App Store-owned record and configuration; template uninstall applies a safe fallback if necessary. | --- ## Activating and Deactivating Apps App Store power controls apply to App Store-managed local apps and templates. Connected integrations must be enabled or disabled on their dedicated settings page so the displayed state and runtime state cannot diverge. ### To Deactivate 1. Go to **Dashboard > App Store > Installed**. 2. Find the app you want to deactivate. 3. Click the **Power Off** icon button. 4. The app's status changes to **inactive** and its functionality is disabled. ### To Reactivate 1. Go to **Dashboard > App Store > Installed**. 2. Find the deactivated app. 3. Click the **Power** icon button. 4. The app's status changes to **active** and its functionality is restored. > **Info:** Deactivating an app preserves its configuration. When you reactivate it, all settings are restored automatically. --- ## Uninstalling an App 1. Go to **Dashboard > App Store > Installed**. 2. Find the app you want to uninstall. 3. Click the **Uninstall** (trash) icon button. 4. A confirmation dialog appears. Confirm to proceed. 5. The app is permanently removed from your account. > **Warning:** Uninstalling an app permanently removes it along with its configuration. If you reinstall the app later, you will need to configure it again from scratch. If you only want to temporarily disable an app, use the deactivate option instead. --- ## App Detail Sidebar The Overview tab on the app detail page includes a sidebar with additional information: ### Details Card | Field | Description | | ------------- | ------------------------------------------------------- | | **Developer** | The name of the developer or company. | | **Version** | The current version number. | | **Website** | A link to the developer's website (opens in a new tab). | ### Tags If the app has tags, they are displayed as small pills. Tags help categorize apps and describe their functionality (e.g., "payment", "shipping", "analytics"). ### Included in Bundles If the app is part of one or more bundles, they are listed with: - The bundle name (clickable -- opens the bundle detail page). - The discount percentage offered by the bundle. This helps you discover whether the app is available through a compatible published bundle. --- ## Troubleshooting | Issue | Solution | | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | Install button not responding | Check your internet connection and try refreshing the page. | | Integration is not active | Open its dedicated setup page and verify its real connection/test status. | | Credentials are rejected in App Store | Configure secrets on the dedicated encrypted settings page. | | App shows "Free via Plan" but charges | Contact support -- this may indicate a plan configuration issue. | | Bundle no longer shows fully installed | One of its bundle-owned apps may have been deactivated or uninstalled individually. Open the bundle to review the remaining items. | | App functionality suddenly stopped | Check if the app was deactivated. Also verify that your subscription plan still includes the app if it was "Free via Plan". | --- Source: https://directsale.ai/help/app-store/bundles # App Bundles App Bundles are curated, atomic installations of compatible App Store-managed items. While checkout is unavailable, a published bundle must be free. Linked integrations are configured individually, and local plugins without registered runtime consumers remain Draft/internal, so current built-in bundle candidates are storefront templates only. ## Browsing Bundles Bundles appear at the top of the **App Store** main page when no category or search filter is applied. Each card shows the bundle name, item count, current tenant status, price availability, and discount metadata when present. Click a bundle card to view its detail page and included apps. --- ## Eligibility and Preconditions A new installable bundle must satisfy all of these rules: - It contains at least one app. - Every member is published and free while checkout is disabled. - Every member is a storefront template or a local plugin with a registered runtime consumer. Current built-ins have no registered local runtime consumers, and linked integrations are excluded from bulk installation. - It contains at most one storefront template. - Any required configuration field has a valid non-sensitive default. Bundles do not collect a separate interactive configuration form for each member. - Dependencies inside the bundle are resolved together. Dependencies outside the bundle must already be active for the tenant. - Published bundles and App Store-managed members have no minimum Required Plan until runtime downgrade enforcement is available. Draft records may retain that future metadata. > **Info:** If a template (or a future local app with a registered runtime consumer) needs tenant-specific required input, install it individually and complete its pre-install Configuration form instead of putting it in a bundle. --- ## Installing a Bundle 1. Open the bundle detail page. 2. Review the included apps, configuration defaults, and dependencies. 3. Click **Install Bundle**. 4. The server validates every item before writing anything, then installs eligible items in one transaction. 5. If any validation or write fails, the transaction rolls back rather than leaving a partially installed bundle. When a member was already installed independently, bundle installation skips it and does not claim ownership of that existing record. Newly created installation records are marked as owned by the bundle. > **Warning:** Paid and freemium bundle activation remains disabled until App Store checkout and payment verification are available. A displayed future price is not an active purchase path. ### Legacy Bundles with Linked Integrations Older data may contain a bundle with a linked integration. The detail page directs the tenant to configure each integration on its dedicated settings page and does not show a misleading bulk-install action. New Admin forms exclude these integrations from bundle membership. --- ## Uninstalling a Bundle 1. Open the bundle detail page. 2. Click **Uninstall Bundle** and confirm. 3. The App Store removes only installation records created and owned by that bundle. 4. Apps that existed independently before bundle installation are preserved. 5. If the removed bundle owned the active template, the storefront switches to another installed template or the safe Modern fallback. Reverse dependencies are checked before removal. If another active app outside the bundle depends on a bundle-owned item, resolve that dependency before uninstalling. > **Info:** Ownership is record-based, not inferred from catalog membership. Merely appearing in a bundle does not make an independently installed app removable by that bundle. --- ## Managing Bundle Members Bundle-owned templates (and future local apps with registered runtime consumers) appear on **App Store > Installed** with the bundle name. They can be configured, activated, deactivated, or uninstalled individually. Doing so can change the bundle from fully active to partial; the bundle detail page reflects the remaining owned and operational records. Linked integrations always remain managed on their dedicated settings page, even if they appear in a legacy bundle. --- ## Bundle Pricing and Plans - **Required Plan** is Draft-only metadata until runtime downgrade enforcement is available; published bundles must leave it empty. - **Included Free With Plans** is future pricing metadata for Draft bundles; it has no effect while published bundles must be free and have no Required Plan. - While checkout is disabled, only free bundles can be published or installed. - Discount and price fields may be prepared on Draft records for future checkout, but they do not authorize activation today. --- ## Finding Bundles for a Specific App When an app belongs to a published bundle, its detail sidebar lists that bundle and links to its detail page. Use that page to review the complete contents and current eligibility before installing. ## Best Practices - Use bundles for items that can be installed safely without tenant-specific secrets or required interactive input. - Keep linked provider setup on the dedicated encrypted integration pages. - Put related dependencies in the same bundle when possible; document any external dependency that must already be active. - Treat a bundle as the owner only of records it created, and verify the Installed page before removing it. --- Source: https://directsale.ai/help/coupons/index # Coupons & Discount Codes Coupons allow you to create discount codes that customers can apply at checkout. You can configure percentage or fixed-amount discounts, set usage limits, schedule active periods, and restrict coupons to specific products. ## Accessing Coupons Navigate to **Dashboard > Coupons** from the sidebar. You will see the coupons management page with an overview of your discount codes. ## Dashboard Overview At the top of the page, four statistics cards give you a quick summary: | Metric | Description | |--------|-------------| | **Total Coupons** | The total number of coupon codes you have created | | **Active Coupons** | Coupons currently within their valid date range and enabled | | **Total Redemptions** | The cumulative number of times all coupons have been used | | **Expired** | Coupons whose expiry date has passed | ## Searching and Filtering Use the filter bar to find specific coupons: - **Search** -- Type a coupon code or description to search across your coupons. - **Status Filter** -- Filter by **All**, **Active**, or **Inactive** to narrow results. Results are paginated with 10 coupons per page. ## Creating a Coupon 1. Click the **Create Coupon** button in the top-right corner. 2. A dialog will open with the following fields: ### Required Fields | Field | Description | |-------|-------------| | **Code** | The coupon code customers will enter. Automatically converted to uppercase. Must be unique. | | **Discount Type** | Choose between **Percentage** (e.g., 20% off) or **Fixed Amount** (e.g., $15 off). | | **Discount Value** | The numeric value of the discount. For percentage, enter a whole number (e.g., `20` for 20%). For fixed amount, enter the currency value. | | **Start Date** | The date and time when the coupon becomes active. | | **Expiry Date** | The date and time when the coupon expires. | ### Optional Fields | Field | Description | |-------|-------------| | **Description** | An internal note describing the coupon's purpose. | | **Minimum Order** | The minimum cart total required for the coupon to be valid. | | **Maximum Discount** | Only available for percentage discounts. Caps the discount amount (e.g., 20% off but max $50 discount). | | **Max Uses** | The total number of times this coupon can be redeemed across all customers. Leave empty for unlimited uses. | | **Max Uses Per Customer** | The maximum number of times a single customer can use this coupon. Defaults to 1. | | **Active** | Toggle to enable or disable the coupon. | > **Info:** Click the **Auto Generate** button next to the code field to automatically create a random 8-character alphanumeric code. ### Application Scope You can choose which products the coupon applies to: - **All Products** -- The coupon is valid for any product in the cart. - **Specific Products** -- The coupon only applies to selected products. When this option is chosen: - Use the product search field to find products. - Check the boxes next to the products you want the coupon to apply to. - Selected products appear as badges below the list. - Optionally set a **Minimum Quantity** -- the minimum number of qualifying products that must be in the cart. 3. Click **Create Coupon** (or **Save Changes** if editing) to save. ## Editing a Coupon 1. Find the coupon in the table. 2. Click the **Edit** (pencil icon) button in the Actions column. 3. The dialog opens pre-filled with the coupon's current settings. 4. Modify the desired fields and click **Save Changes**. ## Deleting a Coupon 1. Find the coupon in the table. 2. Click the **Delete** (trash icon) button in the Actions column. 3. A confirmation prompt will appear. Confirm to permanently delete the coupon. > **Warning:** Deleting a coupon is permanent and cannot be undone. If a coupon has already been used by customers, consider deactivating it instead by toggling the Active switch off. ## Coupon Statuses Each coupon displays a status badge based on its current state: | Status | Description | |--------|-------------| | **Active** | The coupon is enabled and currently within its valid date range. | | **Inactive** | The coupon has been manually disabled via the Active toggle. | | **Scheduled** | The coupon is enabled but its start date is in the future. | | **Expired** | The coupon's expiry date has passed. | ## Table Columns The coupon table displays: | Column | Description | |--------|-------------| | **Code** | The coupon code (shown in monospace, uppercase). The description appears below if set. | | **Type** | Whether the coupon is a percentage or fixed-amount discount. | | **Discount** | The discount value (e.g., "20%" or "$15.00"). | | **Min. Order** | The minimum order amount required, or "-" if not set. | | **Uses / Max** | The number of times the coupon has been used versus its maximum uses. Shows an infinity symbol if unlimited. | | **Valid Period** | The start and expiry dates of the coupon. | | **Status** | The current status badge. | | **Actions** | Edit and delete buttons. | ## Best Practices - **Set clear expiry dates** to create urgency for customers. - **Use maximum discount caps** with percentage coupons to protect margins on high-value orders. - **Limit per-customer usage** to prevent abuse. - **Test coupon codes** by placing a test order before promoting them. - **Use descriptive codes** (e.g., `SUMMER25`, `WELCOME10`) that are easy for customers to remember. --- Source: https://directsale.ai/help/returns/index # Returns Management The Returns page allows you to manage product return requests submitted by customers. You can approve or reject returns, mark items as received, and process refunds through multiple payment methods. ## Accessing Returns Navigate to **Dashboard > Returns** from the sidebar to view all return requests. ## Dashboard Overview Four statistics cards summarize the current state of your returns: | Metric | Description | |--------|-------------| | **Total Returns** | The total number of return requests across all statuses | | **Pending** | Return requests awaiting your review | | **Approved** | Returns that have been approved and are in progress | | **Refunded** | Returns for which refunds have been issued | ## Return Statuses Each return request moves through a lifecycle of statuses: | Status | Description | |--------|-------------| | **PENDING** | The customer submitted a return request. It awaits your review. | | **APPROVED** | You approved the return. The customer should ship the item back. | | **SHIPPED_BACK** | The customer has shipped the item back. | | **RECEIVED** | You confirmed receipt of the returned item. | | **REFUNDED** | The refund has been processed. | | **REJECTED** | You rejected the return request. | | **CANCELLED** | The return request was cancelled. | ## Searching and Filtering Use the filter bar above the table: - **Search** -- Search by return ID, order number, or customer name/email. - **Status Filter** -- Filter by any specific status (Pending, Approved, Shipped Back, Received, Refunded, Rejected, Cancelled) or show all. - **Clear Filters** -- Click the clear button to reset all filters. ## Processing Returns ### Approving a Return 1. Locate a return request with **PENDING** status. 2. Click the **Approve** button (green check icon) in the Actions column. 3. Optionally enter an admin note explaining the approval. 4. Click **Approve** to confirm. > **Info:** After approval, the customer is expected to ship the product back. The status will update to SHIPPED_BACK once the customer confirms shipment. ### Rejecting a Return 1. Locate a return request with **PENDING** status. 2. Click the **Reject** button (red X icon) in the Actions column. 3. Enter a **required** reason for rejection. This reason is shared with the customer. 4. Click **Reject** to confirm. > **Warning:** A rejection reason is mandatory. Be clear and professional in your explanation, as the customer will see this message. ### Marking as Received 1. When a return has **SHIPPED_BACK** status, click the **Mark as Received** button (package check icon). 2. The status will update to **RECEIVED**. ### Processing a Refund 1. Once a return is in **RECEIVED** status, click the **Process Refund** button (dollar icon). 2. A refund dialog opens with these fields: | Field | Description | |-------|-------------| | **Refund Amount** | The amount to refund. Pre-filled with the original order total. You can issue a partial refund by entering a lower amount. | | **Refund Method** | Choose from: **Original Payment** (refund to the original payment method), **Store Credit**, or **Bank Transfer**. | | **Reference** | An optional reference number for the refund transaction (e.g., bank transfer ID). | | **Note** | An optional admin note about the refund. | 3. Click **Process Refund** to complete. ## Table Columns The returns table displays: | Column | Description | |--------|-------------| | **Return ID** | A truncated unique identifier for the return. | | **Order Number** | The associated order number. | | **Customer** | The customer's name and email (or "Guest" for guest orders). | | **Reason** | The reason the customer provided for the return. | | **Status** | The current status badge with color-coding. | | **Refund** | The refund amount if one has been processed, or "-" if pending. | | **Date** | When the return request was submitted. | | **Actions** | Context-sensitive action buttons based on the current status. | ## Return Workflow The typical return workflow follows these steps: 1. **Customer submits** a return request -- status is set to **PENDING**. 2. **You review** the request and either **Approve** or **Reject** it. 3. If approved, the **customer ships** the item back -- status updates to **SHIPPED_BACK**. 4. **You confirm receipt** of the item -- status updates to **RECEIVED**. 5. **You process the refund** -- status updates to **REFUNDED**. ## Best Practices - **Review pending returns promptly** to maintain customer satisfaction. - **Use admin notes** to document your decision-making process for internal reference. - **Verify the returned item** before processing refunds to confirm it matches the original order. - **Consider partial refunds** for items returned in used or damaged condition. - **Choose the appropriate refund method** -- store credit can encourage repeat purchases. --- Source: https://directsale.ai/help/cart-recovery/index # Abandoned Cart Recovery Cart Recovery helps you automatically re-engage customers who added items to their cart but did not complete their purchase. The system sends timed reminders through multiple channels and can include discount coupons to incentivize checkout completion. ## Accessing Cart Recovery Navigate to **Dashboard > Cart Recovery** from the sidebar. The page has two tabs: **Settings** and **Analytics**. --- ## Settings Tab The Settings tab lets you configure every aspect of the cart recovery automation. ### Enabling Cart Recovery At the top, toggle the **Enable Cart Recovery** switch to activate or deactivate the entire feature. When disabled, no recovery reminders will be sent. ### Recovery Scenarios Choose which types of abandoned carts to target: | Scenario | Description | |----------|-------------| | **Chatbot Cart** | Customers who added items during a chatbot conversation but did not complete the order. | | **Checkout Session** | Customers who started the checkout process on your storefront but abandoned it before payment. | | **Unpaid Order** | Orders that were placed but not paid for (e.g., the customer left before completing payment). | Check or uncheck each scenario to include or exclude it from recovery campaigns. ### Reminder Timing Configure up to three reminder messages, each sent after a specified delay from the cart abandonment: | Reminder | Default Delay | Description | |----------|--------------|-------------| | **First Reminder** | 60 minutes (1 hour) | A gentle nudge sent shortly after abandonment. | | **Second Reminder** | 1,440 minutes (24 hours) | A follow-up reminder the next day. | | **Third Reminder** | 4,320 minutes (72 hours) | A final reminder with potential discount incentive. | Enter the delay in **minutes**. The equivalent hours are displayed below each field for convenience. > **Info:** The minimum delay is 15 minutes. Space out your reminders to avoid overwhelming customers -- 1 hour, 24 hours, and 72 hours is a well-tested pattern. ### Recovery Discount Optionally include a discount coupon in recovery reminders to encourage checkout: 1. Toggle the discount on or off. 2. Configure the discount details: | Field | Description | |-------|-------------| | **Discount Type** | Choose **Percentage** or **Fixed Amount**. | | **Value** | The discount value (e.g., 10 for 10% or a currency amount). | | **Max Discount** | Optional cap on the discount amount. Leave empty for no limit. | | **Coupon Expiry** | How many hours the coupon remains valid after being generated (1-168 hours). | > **Info:** Auto-generated coupons are unique to each abandoned cart session. They expire automatically and cannot be reused. ### Notification Channels Select how recovery reminders are delivered: | Channel | Description | |---------|-------------| | **Same Channel (Chatbot)** | Sends the reminder through the same messaging channel the customer originally used (e.g., Telegram, WhatsApp, web widget). | | **Email** | Sends recovery emails if the customer's email address is available. | | **WhatsApp** | Sends WhatsApp messages for recovery (requires a connected WhatsApp channel). | ### Recovery Window Set the **Stop Recovery After** value to define how many hours after abandonment the system should stop attempting recovery. The default is 168 hours (7 days). After this period, abandoned carts are marked as expired. ### Saving Settings Click **Save Settings** at the bottom to apply all configuration changes. --- ## Analytics Tab The Analytics tab provides insights into your cart recovery performance. ### Time Period Select a reporting period in the top-right corner: - **Last 7 Days** - **Last 30 Days** - **Last 90 Days** ### Performance Metrics Four cards summarize key metrics: | Metric | Description | |--------|-------------| | **Total Abandoned** | Number of carts identified as abandoned in the selected period. | | **Recovered** | Number of abandoned carts that resulted in a completed purchase. | | **Recovery Rate** | Percentage of abandoned carts that were recovered. | | **Revenue Recovered** | Total revenue from recovered carts. | ### Abandoned Carts Table Below the metrics, a detailed table lists individual abandoned cart records: | Column | Description | |--------|-------------| | **Date** | When the cart was abandoned. | | **Scenario** | The type of abandonment (Chatbot Cart, Checkout Session, or Unpaid Order). | | **Customer** | Customer name and phone number (if available). | | **Cart Total** | The value of the abandoned cart. | | **Status** | Current recovery status with color-coded badge. | | **Reminders** | How many reminders have been sent out of the maximum 3. | | **Actions** | Manual intervention buttons. | ### Cart Recovery Statuses | Status | Description | |--------|-------------| | **pending** | Cart was abandoned; no reminders sent yet. | | **reminder_1_sent** | First reminder has been delivered. | | **reminder_2_sent** | Second reminder has been delivered. | | **reminder_3_sent** | Third and final reminder has been delivered. | | **recovered** | The customer completed their purchase. | | **expired** | The recovery window has passed without a purchase. | | **cancelled** | Recovery was manually stopped by an operator. | ### Manual Actions For carts that are still in an active recovery state (not recovered, expired, or cancelled): - **Send Reminder** -- Manually trigger an additional reminder message. - **Cancel Recovery** -- Stop all future reminders for this cart. ## Best Practices - **Start with moderate delays** (1 hour, 24 hours, 72 hours) and adjust based on your recovery rate. - **Test the discount incentive** -- even a small 5-10% discount can significantly boost recovery rates. - **Monitor your recovery rate** weekly and adjust timing or discount values accordingly. - **Use multiple channels** -- enabling both chatbot and email channels increases the chance of reaching the customer. - **Set a reasonable recovery window** -- 7 days is generally effective; going beyond 14 days rarely converts. --- Source: https://directsale.ai/help/widget/index # Chat Widget The Chat Widget is a JavaScript-based chat interface that you embed on your website. It allows visitors to interact with your AI sales assistant directly from any page on your site. This section covers API key management, appearance customization, domain security, and the installation process. ## Accessing Widget Settings Navigate to **Dashboard > Widget** from the sidebar to access the widget configuration page. --- ## API Key Management An API key is required for the widget to authenticate with your account. Without it, the widget cannot connect to your chatbot. ### Generating an API Key 1. In the **API Key** section, click **Generate API Key** (or **Generate New Key** if you already have one). 2. The newly generated key is displayed in a highlighted box. 3. **Copy the key immediately** -- it is shown only once for security reasons. > **Warning:** The full API key is displayed only once after generation. Copy it to a secure location immediately. If you lose it, you will need to generate a new one. ### Revoking an API Key If your API key is compromised or you need to rotate it: 1. Click the **Revoke Key** button next to the current key preview. 2. Confirm the action when prompted. 3. The old key is immediately invalidated. Any widget installations using the old key will stop working. 4. Generate a new key and update your website embed code. --- ## Domain Security (Allowed Domains) Control which websites are allowed to use your widget by specifying allowed domains. ### Adding a Domain 1. In the **Allowed Domains** section, enter a domain name (e.g., `example.com` or `https://example.com`). 2. Click the **+** button or press Enter. 3. The domain is normalized automatically -- `www.` prefixes and URL paths are stripped. ### Removing a Domain Click the **X** button next to any domain in the list to remove it. ### Saving Domain Settings Click **Save Domains** to apply the changes. > **Warning:** If no domains are configured, the widget will work on **any** website. For security, always add your production domains to restrict widget usage to your own sites. --- ## Appearance Customization Customize how the widget looks on your website: | Setting | Description | |---------|-------------| | **Primary Color** | The main color used for the widget header, chat bubble button, and bot message backgrounds. Use the color picker or enter a hex code. | | **Position** | Choose whether the widget appears in the **Bottom Right** or **Bottom Left** corner of the page. | | **Welcome Message** | The greeting message displayed when a customer opens the chat (e.g., "Hello! How can I help you?"). | | **Placeholder Text** | The placeholder text shown in the message input field (e.g., "Type your message..."). | ### Saving Appearance Settings Click **Save Settings** to apply your customization. ### Previewing the Widget Click the **Preview** button to see a live preview of how the widget will look with your current settings. The preview shows the chat bubble, conversation window, greeting message, and input field with your chosen colors and position. --- ## Installation To install the widget on your website: 1. Make sure you have generated an API key (see above). 2. Scroll to the **Installation Code** section. 3. Click **Copy Code** to copy the embed snippet. 4. Paste the code into your website's HTML, ideally just before the closing `` tag. The embed code looks like this: ```html ``` > **Info:** The `async` attribute ensures the widget script loads without blocking your page. The widget will appear automatically once the script loads. ### Platform-Specific Instructions **WordPress**: Paste the code in your theme's `footer.php` file or use a plugin like "Insert Headers and Footers." **Shopify**: Go to Online Store > Themes > Edit Code, and paste the snippet in `theme.liquid` before ``. **Wix**: Use the Wix HTML embed feature (Custom Code) to add the snippet to your site. **Any HTML site**: Paste the code before the closing `` tag in your HTML files. > **Warning:** If you have not generated an API key, the embed code will contain a placeholder (`YOUR_API_KEY`). Make sure to generate a real key before deploying. --- ## Bot Behavior The widget uses your chatbot configuration from the **Chat Studio** section. To customize what the bot says, how it responds, and which AI model it uses, go to **Dashboard > Chat Studio**. ## Troubleshooting | Issue | Solution | |-------|----------| | Widget does not appear | Verify the API key is valid and the script URL is correct. Check your browser's developer console for errors. | | Widget appears but does not respond | Ensure your subscription is active and you have not exceeded your message quota. | | Widget blocked on your domain | Check that your domain is in the Allowed Domains list, or that no domains are configured (allowing all). | | Widget appears on unauthorized sites | Add your domains to the Allowed Domains list to restrict usage. | --- Source: https://directsale.ai/help/media-library/index # Media Library The Media Library is a centralized file management system for all images, videos, documents, and other files used across your store. It supports folder organization, tagging, bulk operations, drag-and-drop uploads, and an integrated image editor. ## Accessing the Media Library Navigate to **Dashboard > Media** from the sidebar to open the media gallery. --- ## Interface Overview The Media Library consists of several key areas: - **Toolbar** -- Contains upload, search, filter, view mode, and sort controls. - **Sidebar** -- Shows folders and tags for navigation and organization. - **File Grid / List View** -- Displays your files in either a grid of thumbnails or a detailed list. - **Detail Panel** -- Shows metadata and actions for a selected file. --- ## Uploading Files ### Drag and Drop 1. Drag one or more files from your computer directly onto the media gallery area. 2. A drop zone will appear. Release the files to begin uploading. 3. Upload progress is shown for each file. ### Upload Button 1. Click the **Upload** button in the toolbar. 2. Select one or more files from your computer using the file picker dialog. 3. Files are uploaded immediately after selection. > **Info:** Uploaded files are stored within your account's storage quota. Check your current usage in **Dashboard > Billing** under the Usage & Limits section. --- ## Browsing and Searching ### Search Use the search field in the toolbar to find files by name. Results update as you type. ### File Type Filter Filter files by type: - **All** -- Show all file types. - **Images** -- JPG, PNG, GIF, WebP, SVG, etc. - **Videos** -- MP4, MOV, AVI, etc. - **Documents** -- PDF, DOCX, XLSX, etc. ### Sort Options Sort files by: - **Newest first** (default) - **Oldest first** - **Name (A-Z)** - **Name (Z-A)** - **Largest first** - **Smallest first** ### View Modes Toggle between two display modes: - **Grid View** -- Displays files as a grid of thumbnails. Ideal for visual browsing. - **List View** -- Displays files in a detailed table with columns for name, type, size, dimensions, and date. ### Pagination Files are displayed 24 per page. Use the pagination controls at the bottom to navigate between pages. --- ## Folders Organize your files into folders for better structure. ### Creating a Folder 1. Click the **New Folder** button in the sidebar or toolbar. 2. Enter a folder name in the dialog. 3. Click **Create** to add the folder. ### Navigating Folders - Click a folder name in the sidebar to view files within that folder. - Click the root/home option to return to all files. ### Managing Folders - **Rename** -- Right-click or use the context menu on a folder to rename it. - **Delete** -- Delete a folder from the folder management dialog. Files inside will be moved to the root level. --- ## Tags Tags provide a flexible way to categorize files across folders. ### Creating Tags 1. Click the **Manage Tags** option in the sidebar or toolbar. 2. Enter a tag name and optional color. 3. Click **Create** to add the tag. ### Applying Tags 1. Select a file by clicking on it. 2. In the detail panel, add tags from the tag selector. 3. Tags can also be applied in bulk (see Bulk Operations below). ### Filtering by Tag Click a tag in the sidebar to filter the gallery to show only files with that tag. --- ## File Details Click on any file to select it and open the detail panel on the right side of the screen. The detail panel displays: | Field | Description | |-------|-------------| | **File Name** | Editable name of the file. | | **File Type** | MIME type (e.g., image/jpeg). | | **File Size** | Size in KB or MB. | | **Dimensions** | Width x Height in pixels (for images). | | **Upload Date** | When the file was uploaded. | | **URL** | The direct URL to the file. Click to copy. | | **Tags** | Tags assigned to the file. | | **Folder** | The folder the file is in. | | **Alt Text** | Alternative text for accessibility (editable). | --- ## Image Editor The Media Library includes a built-in image editor for quick edits without leaving the dashboard. ### Opening the Editor 1. Select an image file. 2. Click the **Edit** button in the detail panel or file card. ### Available Editing Tools - **Crop** -- Crop the image to a custom size or predefined aspect ratios. - **Resize** -- Adjust width and height with aspect ratio lock. - **Rotate** -- Rotate the image in 90-degree increments. - **Flip** -- Flip the image horizontally or vertically. ### Saving Edits After editing, click **Save** to overwrite the original file or **Save as Copy** to keep the original intact. --- ## Lightbox Click on an image thumbnail to open it in a full-screen lightbox view. Use the navigation arrows to browse through images sequentially. --- ## Bulk Operations Select multiple files to perform bulk actions: ### Selecting Files - **Click** individual files while holding **Ctrl** (Windows) or **Cmd** (Mac) to select multiple files. - Use **Select All** to select all files on the current page. ### Available Bulk Actions | Action | Description | |--------|-------------| | **Move to Folder** | Move all selected files to a specific folder. | | **Add Tags** | Apply one or more tags to all selected files. | | **Delete** | Delete all selected files permanently. | > **Warning:** Bulk delete is permanent. Deleted files cannot be recovered. Make sure you have confirmed the selection before proceeding. ### Bulk Delete Flow 1. Select the files you want to delete. 2. Click the **Delete** button in the bulk actions bar. 3. A confirmation dialog appears showing the number of files to be deleted. 4. Confirm to proceed with deletion. --- ## Storage Quota Your media storage is limited by your subscription plan. To check your current usage: 1. Go to **Dashboard > Billing**. 2. In the **Usage & Limits** section, look at the **Storage** progress bar. 3. It shows your used storage versus your plan's limit. If you are approaching your storage limit, consider: - Deleting unused files. - Compressing large images before uploading. - Upgrading your subscription plan for more storage. ## Best Practices - **Use folders** to organize files by purpose (e.g., "Product Images," "Blog," "Banners"). - **Use tags** for cross-cutting categorization (e.g., "Sale," "New Arrival," "Hero"). - **Optimize images** before upload -- compress and resize to appropriate dimensions to save storage and improve page load times. - **Add alt text** to all product images for better accessibility and SEO. - **Regularly clean up** unused files to stay within your storage quota. --- Source: https://directsale.ai/help/channels/index # Chat Channels Chat Channels let you connect your AI sales assistant to popular messaging platforms so customers can interact with your chatbot directly from Telegram, WhatsApp, Instagram, LINE, and more. Each channel runs the same AI assistant configured in your Chat Studio. ## Accessing Channels Follow [Connection Setup, Testing & Recovery](https://directsale.ai/help/channels/connection-guide) for the step-by-step token and authorization workflows. Test incoming and outgoing messages after connecting. Navigate to **Messaging Channels** from the sidebar. Connection availability depends on role, plan, provider permissions and tenant currency—not panel or chatbot display language. --- ## Available Platforms The channels page displays a grid of all supported messaging platforms. Each card shows the platform name, its connection status, and whether it is available on your current plan. ### Always Available | Platform | Description | |----------|-------------| | **Website (Chat Widget)** | The built-in web chat widget. Always active -- configure it in the Widget settings page. | ### Messaging Platforms | Platform | Connection Method | Plan Requirement | |----------|------------------|-----------------| | **WhatsApp** | Meta OAuth (Cloud API) | Varies by plan | | **Instagram** | Meta OAuth | Varies by plan | | **Telegram** | Bot Token (via BotFather) | Varies by plan | | **LINE** | Channel credentials | Varies by plan | | **Facebook Messenger** | Coming Soon | -- | Treat any card labelled Coming Soon as unavailable, even if a marketing page lists that platform family. Use the live connection form as the source for current setup requirements. ### Iranian messaging channels For eligible IRR/IRT tenants, Bale, Eitaa and Rubika use the bot-token connection form. Create a bot through that platform's supported process, choose its card, enter the requested credentials and save. Test a real incoming message and check status. Currency selection does not create a bot or activate a connection automatically. Do not reuse a Bale payment bot for support chat: its webhook must remain dedicated to payments. ### Instagram response controls After connecting Instagram, configure DMs, story replies and comments individually. Answer all with AI considers matching prepared Auto Replies first. Auto Replies only leaves unmatched messages without a generated answer. Public-only comments, long replies and privacy limitations are explained in [Instagram reply settings](https://directsale.ai/help/channels/instagram-replies). > **Info:** Platform availability depends on your subscription plan. If a platform shows a lock icon, you need to upgrade your plan to access it. Click **Upgrade Plan** on the card to go to the billing page. --- ## Connecting a Channel ### Telegram Telegram bots are connected using a Bot Token from the Telegram BotFather. 1. Click the **Telegram** card or the **Connect** button. 2. A dialog opens with step-by-step instructions: - Open [BotFather](https://t.me/BotFather) on Telegram. - Send `/newbot` and follow the prompts to create a new bot. - Copy the Bot Token provided by BotFather. - Paste the token in the dialog and give your connection a name. 3. Click **Connect** to establish the connection. > **Info:** Each Telegram bot token can only be used by one connection at a time. If you previously used the same token elsewhere, disconnect it there first. ### WhatsApp WhatsApp uses Meta's Cloud API with OAuth authentication. 1. Click the **WhatsApp** card or the **Connect** button. 2. A Meta OAuth dialog opens. 3. Follow the Meta authentication flow to grant access to your WhatsApp Business account. 4. Select the phone number you want to connect. 5. The connection is established automatically after authorization. > **Warning:** WhatsApp Business API requires a verified Meta Business account and a dedicated phone number. Personal WhatsApp numbers cannot be used. ### Instagram Instagram also uses Meta OAuth for connection. 1. Click the **Instagram** card or the **Connect** button. 2. Follow the Meta authentication flow. 3. Grant the required permissions for your Instagram Business or Creator account. 4. The connection is established after authorization. ### LINE LINE requires Channel ID and Channel Secret credentials. 1. Click the **LINE** card or the **Connect** button. 2. A dialog asks for your LINE Channel credentials: - **Channel ID** -- Found in your LINE Developers Console. - **Channel Secret** -- Found in your LINE Developers Console. - **Channel Access Token** -- Generated in the LINE Developers Console. 3. Enter the credentials and a connection name. 4. Click **Connect**. --- ## Managing Connections ### Active Connections All your connected channels appear in the **Active Connections** section below the platform grid. Each connection card shows: | Field | Description | |-------|-------------| | **Name** | The name you gave the connection. | | **Platform** | The messaging platform (e.g., Telegram, WhatsApp). | | **Bot Name** | The bot's username on the platform (if applicable). | | **Status** | Connection health indicator (green check = connected, red X = error, gray = disconnected). | | **Messages** | Total messages exchanged through this channel. | | **Conversations** | Total conversations initiated through this channel. | | **Error Message** | If the connection has an error, the error details are shown here. | ### Connecting / Disconnecting - **Disconnect** -- Click the **Disconnect** button to pause a connection. The bot stops receiving messages but the configuration is preserved. - **Connect** -- Click the **Connect** button to reactivate a disconnected channel. ### Deleting a Connection 1. Click the **Delete** (trash icon) button on the connection card. 2. Confirm the deletion when prompted. 3. The connection is permanently removed along with its configuration. > **Warning:** Deleting a connection is permanent. All connection settings are lost. Conversation history is preserved, but no new messages will be received on this channel. --- ## Connection Statuses | Status | Icon | Description | |--------|------|-------------| | **Connected** | Green check | The channel is active and receiving messages. | | **Disconnected** | Gray circle | The channel is paused. No messages are being received. | | **Error** | Red X | The connection has encountered an error (e.g., expired token, revoked permissions). Check the error message for details. | --- ## Troubleshooting | Issue | Solution | |-------|----------| | Telegram bot not responding | Verify the bot token is correct and has not been revoked via BotFather. Try disconnecting and reconnecting. | | WhatsApp connection error | Check that your Meta Business account is verified and the phone number is properly configured in the Meta Business Suite. | | Instagram not receiving messages | Ensure your Instagram account is a Business or Creator account (personal accounts are not supported). | | Platform shows "Locked" | Your current plan does not include this platform. Go to **Dashboard > Billing** to upgrade. | | Error status on a connection | Read the error message displayed on the card. Common causes include expired tokens, revoked permissions, or API quota limits. | ## Best Practices - **Name your connections clearly** (e.g., "Main Telegram Bot", "Support WhatsApp") so they are easy to identify. - **Monitor connection statuses** regularly to catch and resolve errors quickly. - **Test each channel** after connecting by sending a test message from the platform. - **Use multiple channels** to maximize customer reach -- customers can use their preferred messaging app. - **Keep credentials secure** -- never share bot tokens or API keys publicly. --- Source: https://directsale.ai/help/channels/instagram-replies # Instagram: DMs, Story Replies and Public Comments Connect an eligible Instagram account in **Messaging Channels**, then open its reply settings. Required Meta permissions, plan access and a healthy connection are prerequisites. See [connection setup](https://directsale.ai/help/channels/connection-guide). Concerned about your account? Read [Instagram account safety and permissions](https://directsale.ai/help/channels/instagram-account-safety). Official authorization is not an exemption from Meta's rules or a guarantee against account restrictions. ## Configure each event type 1. Open the intended Instagram connection, not a different page/account. 2. Set **Reply to DMs**, **Reply to Story replies** and **Reply to comments** separately. 3. For each enabled type, choose the response mode. 4. For stories, check the reply-window setting shown in the form. 5. For comments, choose public-thread replies or the offered private-message delivery behavior. 6. Save and test each enabled type from a different customer-side account. A connected account does not automatically enable all three switches. A story window is not permission to respond to unlimited historical events, and provider rules still apply. ## Auto Replies run before AI | Mode | Behavior | | --- | --- | | Answer all with AI | Matching Auto Replies are considered first. If none matches, AI can generate an answer. | | Auto Replies only | Only matching configured triggers receive prepared responses; an unmatched message does not get an AI fallback. | | Event type switched off | The disabled type is not opted into automated replies by that control. | Prepare rules in [Auto Replies](https://directsale.ai/help/chat-studio/auto-replies), checking active status, Exact/Contains mode, case sensitivity and priority. Test a matching phrase and a nonmatching phrase. Prepared Auto Reply sends do not consume the AI-generated customer-reply allowance; rule storage limits and provider restrictions remain separate. Human takeover, account permissions and delivery failures can also affect the result. Do not diagnose every missing reply as an AI quota problem. ## Reply under the comment instead of by DM Enable **Reply under the comment — do not send a DM** when you want the answer in the public thread. Prepared replies use the main answer rather than a private-message delivery notice. Public replies cannot use private order, cart or payment tools. Never include private customer information. Invite the customer to an appropriate private channel when an order-specific discussion is needed; the public-only option must not be treated as permission to send an unsolicited private answer. ## Long and partially delivered answers Long public answers may be split into numbered parts. Splitting does not guarantee that every part is accepted: provider limits, permissions, network errors or account restrictions can interrupt delivery. Inspect which parts reached the thread before retrying. Repeating the whole action can duplicate already-sent comments. Keep prepared public replies concise and link or direct customers to an appropriate source for lengthy general information when supported. Do not promise that attached media or private-message buttons will behave identically in comments. ## Verify the complete flow Run three separate tests: a DM, a story reply and a comment. For comments, verify the exact public thread and confirm no DM was sent when public-only mode is selected. For each test inspect the incoming conversation/event, selected rule or AI response, and actual customer-side delivery. If no event arrives, check connected asset, Meta permissions and webhook diagnostics. If an event arrives without a response, check the event switch, mode, matching rule and handoff. If only part arrives, inspect delivery status and shorten the prepared wording before retesting. Reconnect only after checking diagnostics; repeated reconnects do not fix policy restrictions. Share sanitized error details with [Support](https://directsale.ai/help/getting-started/support), not customer messages, access tokens or private order data. --- Source: https://directsale.ai/help/channels/instagram-account-safety # Can Using DirectSale Cause Problems for My Instagram Account? DirectSale has completed Meta's app-review process and received approval for its Instagram integration. The platform team reports that Meta reviewed the integration for approximately 20 days before granting approval. Connecting through DirectSale therefore uses an approved, official integration, not an unauthorized connection method. DirectSale connects through the official Instagram/Meta authorization flow and API permissions, rather than asking you to give DirectSale your Instagram password. You authorize the connection on Instagram/Meta, and the integration can use only the access available to the app and granted for the connected account. It is not designed to bypass Meta's access controls. ## What permission approval means Messaging and comment features depend on the required permissions and the account's eligibility. App access and your authorization are prerequisites for the relevant API operations; a connection cannot simply ignore missing or revoked permissions. If Meta denies access, a required feature may remain unavailable until the permission or account issue is resolved. This is different from a guarantee that an account can never be restricted. Authorization does not exempt a business from Meta's rules, messaging windows, rate limits or account enforcement. Message content and how automation is used still matter. Do not interpret an approved connection as permission for spam or unrestricted messaging. In practical terms, the connection supplied by DirectSale is official; account issues caused by your own Instagram activity, prohibited content, spam or other policy violations remain separate from that approval. DirectSale cannot promise immunity from Meta's decisions or guarantee that an integration will never experience a technical fault. ## How to use the connection responsibly Connect only an account you are authorized to manage. Review the permissions on the official authorization screen, configure the intended DM/story/comment response modes, and test with a small number of legitimate interactions. Keep replies relevant and avoid repeated unsolicited messages. Do not share your password, access tokens or payment credentials in Help or public comments. If Instagram shows an account warning, stop the affected automation and review the warning in Meta/Instagram. Check DirectSale's connection status and contact Support if needed. Reconnecting repeatedly does not resolve an account restriction or guarantee permission approval. See [Instagram reply settings](https://directsale.ai/help/channels/instagram-replies) to control what receives a reply and whether comments are answered publicly or by DM. --- Source: https://directsale.ai/help/channels/connection-guide # Messaging Connections: Setup, Testing and Recovery Open **Dashboard > Messaging Channels**. The add-connection list shows platforms available for your plan and account. This is separate from commerce Connections and Accounting Sales Channels. ## Before you start Use an authorized business account for the platform. Review plan availability and tenant currency: Bale, Eitaa and Rubika setup is tied to the Iranian currency region, not the dashboard display language. Changing currency does not itself create or authenticate a channel. Prepare Business Profile, Knowledge Base and a small test conversation before routing real customers to AI. Keep tokens and secrets only in the designated connection fields. ## Token-based bots 1. Choose the desired Telegram, Bale, Eitaa or Rubika bot connection offered by the panel. 2. Follow the provider-specific bot-creation instructions shown in the dialog. 3. Enter the connection name and bot token in its designated field. 4. Save/connect and wait for the returned status. 5. Use the saved-connection Test action where offered. 6. Send a message from your own customer-side account and confirm it arrives in DirectSale Conversations and receives the intended reply. Use the correct provider token; a Telegram token cannot configure Bale. If a bot requires the customer to start a conversation first, do so from the customer-side account. Do not assume a Connected badge proves end-to-end delivery. ## Meta authorization 1. Choose the available Meta platform and start its official authorization flow. 2. Sign into an account allowed to manage the relevant business/page/Instagram asset. 3. Review permissions and select the intended asset. 4. Return to DirectSale and verify the saved connection and diagnostics. 5. Configure reply modes, then test from a different customer-side account. 6. If webhook/subscription diagnostics report an issue, use the offered resubscribe/reconnect action after correcting permissions. See [Instagram Reply Settings](https://directsale.ai/help/channels/instagram-replies) and [Meta Approval and Account Safety](https://directsale.ai/help/channels/instagram-account-safety). Meta approval does not authorize spam or bypass account rules. ## LINE and other available platforms For LINE, use the dedicated dialog and supply the channel credentials requested there; these are not a Telegram-style bot token. Follow the displayed webhook/verification instructions and test an incoming event plus an outgoing reply. For any additional platform, use only the connection method and fields actually offered by the panel. Availability can be restricted by plan or provider readiness; a disabled card is not an active integration. Consult Support rather than entering credentials for an unsupported platform into a different provider's form. ## Manage an existing connection Review its name, platform, Connected/Disconnected/error state and diagnostics. Test verifies the saved configuration; it does not necessarily prove every event type works. Disconnect stops the connection without meaning all remote permissions or historical conversations were deleted. Delete removes the configured connection through the offered confirmation; review operational effects first. ## Verification and troubleshooting Check one incoming message, its conversation record and outgoing response. For Instagram, test DM, story and comment separately. If no event arrives, inspect account/asset selection, token validity, webhook diagnostics and provider permissions. If an event arrives without a reply, inspect reply mode, Auto Reply trigger, handoff status and allowances. After a timeout, inspect the existing connection before creating a duplicate. Do not disable TLS checks, publish tokens or repeatedly reconnect an account restriction. Report the provider, status and sanitized error to [Support](https://directsale.ai/help/getting-started/support). --- Source: https://directsale.ai/help/analytics/index # Analytics & Reports The Analytics page provides a comprehensive view of your chatbot's performance, including conversation trends, message volumes, hourly activity patterns, top products, and platform distribution. ## Accessing Analytics Navigate to **Dashboard > Analytics** from the sidebar. --- ## Time Period Selection Use the dropdown in the top-right corner to select a reporting period: | Period | Description | |--------|-------------| | **Last 7 Days** | Data from the past week. | | **Last 30 Days** | Data from the past month. | | **Last 3 Months** | Data from the past quarter. | All metrics, charts, and data refresh automatically when you change the period. --- ## Key Metrics Three summary cards are displayed at the top: | Metric | Description | |--------|-------------| | **Total Conversations** | The total number of chat conversations started in the selected period. Includes a growth percentage compared to the previous equivalent period. | | **Total Messages** | The total number of messages exchanged (both user and bot messages). Includes a growth percentage. | | **Avg Messages Per Conversation** | The average number of messages per conversation. Indicates engagement depth. | ### Growth Indicators - **Green** with a "+" prefix indicates positive growth compared to the previous period. - **Red** with a "-" prefix indicates a decline. - **Gray** indicates no change. --- ## Charts and Tabs The analytics page has four tabbed views for deeper analysis: ### Conversation Trends A bar chart showing the number of conversations per day over the selected period. - Hover over any bar to see the exact count and date. - Useful for identifying peak conversation days and trends. ### Message Trends A bar chart showing the total messages per day, broken down by: - **User Messages** -- Messages sent by customers. - **Bot Messages** -- Messages sent by the AI assistant. Hover over each bar to see the breakdown. ### Hourly Activity A 24-hour bar chart showing when your chatbot is most active. - Each bar represents one hour of the day (00-23). - The height indicates the relative message volume during that hour. - Useful for understanding when your customers are most active, which can help with staffing live operators. > **Info:** If you notice high activity during specific hours, consider scheduling live operator support during those peak times for issues the AI cannot handle. ### Top Products A ranked list of the products most frequently asked about or mentioned in conversations. | Column | Description | |--------|-------------| | **Rank** | The product's position (1 = most inquired). | | **Product Name** | The name of the product. | | **Inquiries** | The number of times the product was mentioned or asked about. | A horizontal bar chart visually represents relative inquiry volume. > **Info:** Use this data to identify trending products. Products with high inquiry counts but low sales may need improved product pages or pricing adjustments. ### Platform Distribution Shows how conversations are distributed across your connected channels: | Column | Description | |--------|-------------| | **Platform** | The channel name (Web, Widget, Telegram, WhatsApp, etc.). | | **Count** | The number of conversations from this platform. | | **Percentage** | The share of total conversations. | A progress bar for each platform visualizes its proportion. --- ## Understanding Your Data ### Conversation vs. Message - A **conversation** is a complete chat session between a customer and your chatbot. It starts when a customer sends their first message and ends when the session times out or is closed. - A **message** is an individual text exchange within a conversation. One conversation typically contains multiple messages. ### What "Growth" Means Growth percentages compare the current period to the previous equivalent period. For example: - If you select "Last 7 Days," the growth compares the most recent 7 days to the 7 days before that. - A growth of "+25.0%" means conversations increased by 25% compared to the previous period. --- ## Best Practices - **Check analytics weekly** to track trends and catch issues early. - **Compare periods** by switching between 7-day, 30-day, and 3-month views to spot seasonal patterns. - **Use hourly activity data** to optimize operator schedules and chatbot response times. - **Review top products** to ensure your AI assistant has accurate, up-to-date information about popular items. - **Monitor platform distribution** to focus marketing efforts on the channels where your customers are most active. - **Track the messages-per-conversation ratio** -- if it is unusually high, the bot may be struggling to provide satisfactory answers, and your knowledge base may need updating. --- Source: https://directsale.ai/help/settings/index # Settings The **Settings** page is your central hub for configuring every aspect of your DirectSale account. From store branding to security, checkout configuration, notifications, data privacy, and backups -- everything is accessible from a single tabbed interface. ## Accessing Settings To open the Settings page: 1. Log in to your dashboard. 2. Click **Settings** in the top navigation bar (alongside Usage, Billing, Team, and Support). You will land on the Settings page with the **General** tab selected by default. ## Available Tabs Use the available tabs below. Visibility depends on your role and enabled features; click a tab icon or label to switch sections. | Tab | Icon | Description | |-----|------|-------------| | **General** | Store | Store name, business type, AI language, customer portal toggle, and account information | | **Appearance** | Palette | Dashboard style and theme; separate from the customer-facing storefront design | | **Security** | Lock | Password management, two-factor authentication (TOTP and email), login history, active sessions, and trusted devices | | **Notifications** | Bell | Email notification preferences, weekly reports, quota alerts, new conversation alerts, and handoff notification channels (email and Telegram) | | **Integrations** | Link | API key management, connected messaging platforms (Telegram, WhatsApp, Instagram), and e-commerce platform connections | | **Checkout** | Shopping Cart | Enable/disable checkout, choose between hosted checkout and external cart sync, configure payment gateways, and set up WooCommerce or custom API integrations | | **Data Privacy** | Shield | Export your data, delete all conversations, and permanently delete your account | | **Backup & Restore** | Hard Drive | Create full data backups, download backup archives, restore from a backup file, and view backup history | > **Info:** On smaller screens, the tab labels are hidden and only the icons are displayed. You can still tap any icon to switch tabs. ## How the Page Works When the Settings page loads, it fetches your current tenant profile from the server. If the data fails to load, an error banner is displayed at the top of the page. Each tab independently manages its own data fetching and saving -- changes you make in one tab do not affect other tabs. ## Quick Links - [General Settings](https://directsale.ai/help/settings/general) -- Store identity and AI language configuration - [Appearance & Integrations](https://directsale.ai/help/settings/appearance-integrations) -- Dashboard themes, API keys and connection summaries - [Notification Center](https://directsale.ai/help/settings/notification-center) -- Operational events, recipient channels and delivery testing - [Security](https://directsale.ai/help/settings/security) -- Password, 2FA, sessions, and login history - [Notifications](https://directsale.ai/help/settings/notifications) -- Alert preferences and handoff notification channels - [Checkout](https://directsale.ai/help/settings/checkout) -- Payment gateways and external cart integration - [Data Privacy](https://directsale.ai/help/settings/data-privacy) -- Data export, conversation deletion, and account deletion - [Backup & Restore](https://directsale.ai/help/settings/backup) -- Create, download, and restore from backups --- Source: https://directsale.ai/help/settings/general # General Settings The **General** tab is the first tab you see when you open the Settings page. It contains four cards that let you manage your store identity, AI chatbot language, customer portal access, and view your account details. ## Store Information The Store Information card displays and lets you edit your core store profile. ### Fields | Field | Editable | Description | |-------|----------|-------------| | **Email** | No | The email address associated with your account. This is set during registration and cannot be changed from the dashboard. | | **Store Name** | Yes | The display name of your store. This appears in the dashboard header, the chat widget, your storefront, and other customer-facing surfaces. | | **Business Type** | Yes | Your industry category. The AI chatbot uses this to tailor its product recommendations and conversation style. | | **Registration Date** | No | The date your account was created (displayed below the form). | ### Business Type Options Choose the industry template that best matches your business: | Value | Description | |-------|-------------| | **General** | Default for stores that do not fit a specific category | | **Clothing** | Fashion, apparel, and accessories | | **Electronics** | Consumer electronics, gadgets, and tech products | | **Auto Parts** | Automotive parts and accessories | | **Beauty** | Cosmetics, skincare, and personal care | | **Home Appliances** | Kitchen and household appliances | | **Food** | Food, beverages, and groceries | > **Info:** Changing the business type affects how the AI chatbot understands and categorizes your products. The system uses this to load an appropriate industry template that improves response quality and product attribute extraction. ### How to Update Store Information 1. Navigate to **Settings** and make sure the **General** tab is selected. 2. In the **Store Information** card, update the **Store Name** text field. 3. Select a **Business Type** from the dropdown menu. 4. Click the **Save Changes** button. 5. A green checkmark icon will appear briefly to confirm the changes were saved successfully. --- ## Currency and regional defaults The tenant currency controls regional payment and messaging setup independently of the panel display language. - **IRR / IRT:** Persian AI/storefront language defaults and right-to-left layout; Iranian payment options, Bale, Eitaa and Rubika setup are shown where supported by your plan. - **USD / EUR / GBP:** English business-language defaults and international payment options. Other currencies use their configured language preset; multi-language currencies default to English. - Every actual currency-code change resets these business-language defaults, even IRR to IRT. Later manual language changes remain until the next currency change. Saving the same currency does not reset them. - The dashboard display language, existing product/page content, catalog search language, prices, invoices and connected channels are not translated, converted or deleted. - A confirmation explains that numeric amounts are **not converted**. Save other drafts first: the panel reloads after saving the currency. Review catalog and accounting prices before accepting new payments. - The target AI language must be active on the platform. If it is unavailable, the currency save stops without partial changes. Smart Help answers in the language you request or clearly use in your question, not necessarily the language of the panel. ## AI Language The AI Language card controls which language your AI chatbot uses when responding to customers. ### Fields | Field | Description | |-------|-------------| | **Current Language** | Shows the currently active language, including its flag and native name. If no language is set, it displays "System Default." | | **Select Language** | A dropdown listing all active languages available on the platform. Choose "System Default" to let the system decide automatically. | ### How to Change the AI Language 1. In the **AI Language** card, review your current language setting at the top. 2. Open the **Select Language** dropdown. 3. Choose the language you want the chatbot to use. Each option shows the language flag, its native name, and its English name. 4. Click the **Save Language** button. 5. A confirmation indicator will appear when the change has been applied. > **Info:** The AI language setting only affects the chatbot's response language. It does not change the dashboard interface language, which is controlled separately by your browser or dashboard locale preferences. --- ## Customer Portal The Customer Portal card provides a toggle to enable or disable the customer-facing login portal for your store. ### What the Customer Portal Does When enabled, customers can create accounts and log into a portal where they can: - View their order history - Track order status - Manage their profile and shipping addresses - Access their conversation history with the chatbot ### How to Toggle the Customer Portal 1. In the **Customer Portal** card, locate the toggle switch. 2. Click the toggle to switch between **enabled** (blue) and **disabled** (gray). 3. The change is saved automatically as soon as you toggle it -- no separate save button is needed. > **Info:** Disabling the customer portal does not delete existing customer accounts or data. It simply prevents customers from logging in until you re-enable it. --- ## Account Information The Account Information card provides a read-only summary of your account. ### Displayed Information | Field | Description | |-------|-------------| | **Subscription Plan** | Your current plan tier (e.g., Free, Starter, Professional, Business). Displayed with a capitalized label. | | **Account ID** | A shortened version of your unique tenant identifier (first 8 characters). | ### Request Account Deletion At the bottom of the Account Information card, there is a **Request Account Deletion** button. Clicking it opens your default email client with a pre-filled message addressed to the support team, including your account ID. The support team will process the deletion request manually. > **Warning:** Account deletion is permanent. All your data, including products, conversations, orders, and settings, will be removed. For a self-service deletion option, see the [Data Privacy](https://directsale.ai/help/settings/data-privacy) tab. --- Source: https://directsale.ai/help/settings/security # Security The **Security** tab provides tools to protect your account. It is organized into five sections: password management, two-factor authentication (2FA), login history, active sessions, and trusted devices. ## Automatic Sign-Out The tenant dashboard signs out after **15 minutes without activity**. Typing, clicking, moving the pointer, touching, or scrolling in any dashboard tab in the same browser keeps the session active. Background updates do not count as activity. Reloading the page does not restart the inactivity period; returning after a long absence or computer sleep requires signing in again. Save your work before leaving the panel. While you are active, the dashboard renews your login automatically. Temporary network failures do not by themselves clear your login. Administrator **Login as tenant** sessions also have a maximum duration of two hours, after which the administrator must open a new session. ## Change Password The Change Password card lets you update your account password. ### Fields | Field | Description | |-------|-------------| | **Current Password** | Your existing password. Required to verify your identity before allowing the change. | | **New Password** | The password you want to switch to. Must be at least 8 characters long. | | **Confirm New Password** | Re-enter the new password. Must match the New Password field exactly. | ### How to Change Your Password 1. Navigate to **Settings > Security**. 2. Enter your **Current Password**. 3. Enter your desired **New Password** (minimum 8 characters). 4. Re-enter the new password in the **Confirm New Password** field. 5. Click the **Change Password** button. 6. If successful, a green success banner will appear confirming the change. All three fields will be cleared automatically. > **Info:** You can toggle the visibility of all password fields by clicking the eye icon on the current password field. This toggles between hidden (dots) and visible (plain text) for all three fields simultaneously. ### Common Errors | Error | Cause | |-------|-------| | Passwords do not match | The new password and confirmation do not match. | | Password too short | The new password is fewer than 8 characters. | | Current password incorrect | The current password you entered does not match your account's existing password. | --- ## Two-Factor Authentication (2FA) Two-factor authentication adds an extra layer of security to your account. Even if someone obtains your password, they will need a second verification code to log in. The platform supports two 2FA methods that can be enabled independently or together. ### Available Methods | Method | Description | |--------|-------------| | **Authenticator App (TOTP)** | Uses an app like Google Authenticator, Authy, or 1Password to generate time-based one-time codes. This is the most secure method. | | **Email** | Sends a verification code to your registered email address each time you log in. Convenient but depends on email access. | ### Setting Up Authenticator App (TOTP) 1. In the **Two-Factor Authentication** card, find the **Authenticator App** row. 2. Click the **Enable** button. 3. A QR code will appear on screen. Open your authenticator app (Google Authenticator, Authy, etc.) and scan the QR code. 4. If you cannot scan the QR code, click to reveal the **Manual Entry Key** and type it into your authenticator app manually. 5. Enter the 6-digit code shown in your authenticator app into the verification field. 6. Click **Verify and Enable**. 7. The system will display a set of **backup codes**. These are one-time-use codes you can use to log in if you lose access to your authenticator app. > **Warning:** Save your backup codes in a secure location immediately. They are only shown once. If you lose your authenticator device and do not have backup codes, you may be locked out of your account. ### Setting Up Email 2FA 1. In the **Two-Factor Authentication** card, find the **Email** row. 2. Click the **Enable** button. 3. Email 2FA will be activated immediately using your registered email address. 4. If this is the first 2FA method you are enabling, the system will display **backup codes**. Save them securely. ### Disabling a 2FA Method 1. Locate the method you want to disable (Authenticator App or Email). It will show a green "Enabled" label. 2. Click the **Disable** button next to it. 3. A confirmation panel will appear asking for your **account password**. 4. Enter your password and click the **Disable** confirmation button. 5. The method will be removed. If you have another 2FA method still active, it will continue to protect your account. ### Backup Codes Backup codes are generated the first time you enable any 2FA method. They provide emergency access if you lose your primary 2FA device. | Detail | Description | |--------|-------------| | **Purpose** | One-time-use codes to log in when you cannot access your authenticator app or email | | **Quantity** | Multiple codes are generated (displayed in a two-column grid) | | **Remaining count** | The card shows how many unused backup codes you have left | | **Regenerate** | Click the **Regenerate** button to create a new set of codes. You will need to enter your password. Regenerating invalidates all previous backup codes. | ### How to Regenerate Backup Codes 1. In the **Two-Factor Authentication** card, find the **Backup Codes** section at the bottom (only visible when at least one 2FA method is enabled). 2. Note the count of remaining backup codes. 3. Click the **Regenerate** button. 4. Enter your account password when prompted. 5. A new set of backup codes will be displayed. Save them immediately -- the old codes are now invalid. --- ## Login History The Login History card shows the five most recent login attempts to your account, including both successful and failed attempts. ### Information Displayed Each login entry shows: | Field | Description | |-------|-------------| | **Browser and OS** | The browser name and operating system used (e.g., "Chrome on Windows"). | | **Device type** | An icon indicating whether the login was from a desktop/laptop or a mobile device. | | **IP Address** | The IP address the login came from. | | **Location** | Geographic location based on the IP address, if available. | | **Status** | Successful logins appear on a neutral background. Failed logins are highlighted with a red background and a "Failed" badge. | | **Date and Time** | When the login attempt occurred. | > **Info:** Regularly reviewing your login history helps you detect unauthorized access. If you see a login from an unfamiliar location or device, change your password immediately and consider enabling two-factor authentication. --- ## Active Sessions The Active Sessions card shows all devices and browsers currently logged into your account. This section spans the full width of the settings area for better readability. ### Session Information Each session entry shows: | Field | Description | |-------|-------------| | **Browser and OS** | The browser and operating system of the session. | | **Device type** | Desktop/laptop or mobile device icon. | | **IP Address** | The IP address of the session. | | **Last Active** | When the session was last used. | | **Current Session Badge** | Your current session is highlighted with a blue background and a "This Device" badge. | ### Revoking a Single Session 1. In the Active Sessions card, find the session you want to end. 2. Click the **Revoke** button (log-out icon) on that session's row. 3. Confirm the action when prompted. 4. The session will be terminated and the user on that device will be logged out. > **Info:** You cannot revoke your current session from this panel. The revoke button is only shown for other sessions. ### Revoking All Other Sessions If you suspect unauthorized access, you can log out all other devices at once: 1. Below the session list, click the **Log Out All Other Devices** button. 2. Confirm the action when prompted. 3. All sessions except your current one will be terminated immediately. --- ## Trusted Devices The Trusted Devices card manages devices that have been marked as "trusted" during 2FA login. When you trust a device, you will not be asked for a 2FA code on future logins from that device until the trust expires. This section also spans the full width of the settings area. ### Trusted Device Information Each trusted device entry shows: | Field | Description | |-------|-------------| | **Browser and OS** | The browser and operating system of the trusted device. | | **IP Address** | The IP address when the device was trusted. | | **Expires** | The date when the trust will expire and 2FA will be required again. | ### Removing a Single Trusted Device 1. Find the device in the list. 2. Click the **Remove** button (X icon) on that row. 3. The device will be removed and 2FA will be required on the next login from that device. ### Removing All Trusted Devices 1. Click the **Remove All Trusted Devices** button below the device list. 2. Confirm the action when prompted. 3. All trusted devices will be removed. Every device will need to complete 2FA on the next login. > **Info:** The Trusted Devices section only appears when you have two-factor authentication enabled. If you have not set up any 2FA method, the list will be empty. --- Source: https://directsale.ai/help/settings/notifications # Notifications The **Notifications** tab lets you control which alerts and reports you receive, and configure how your team is notified when a customer conversation is handed off to a human operator. The page is organized into two cards: **Notification Preferences** (general alerts) and **Handoff Notifications** (operator escalation alerts). ## Notification Preferences This card contains four toggles that control different types of notifications. Changes take effect immediately when you toggle a switch -- there is no separate save button for these settings. ### Available Toggles | Toggle | Default | Description | |--------|---------|-------------| | **Email Notifications** | On | Master switch for receiving email notifications. When disabled, no email alerts of any kind will be sent. | | **Weekly Report** | On | Receive a weekly summary email with key metrics such as total conversations, orders, revenue, and chatbot performance. | | **Low Quota Alert** | On | Get notified when your AI message quota is running low, so you can upgrade your plan or purchase additional quota before running out. | | **New Conversation Alert** | Off | Receive a notification each time a new customer starts a conversation with your chatbot. This is disabled by default because high-traffic stores would receive too many alerts. | ### How to Change Notification Preferences 1. Navigate to **Settings > Notifications**. 2. In the **Notification Preferences** card, locate the toggle for the notification type you want to change. 3. Click the toggle to switch it on (blue) or off (gray). 4. The preference is saved instantly to your browser's local storage. > **Info:** Notification preferences are currently stored in your browser's local storage. This means they are specific to the browser and device you are using. If you log in from a different browser or device, you will need to set your preferences again. --- ## Handoff Notifications When a customer conversation is escalated from the AI chatbot to a human operator (a "handoff"), you can be notified through email and/or Telegram. This card lets you configure those notification channels. ### Fields | Field | Required | Description | |-------|----------|-------------| | **Notification Email** | No | The email address where handoff notifications will be sent. This can be different from your account email -- for example, a shared team inbox. | | **Telegram Bot Token** | No | The API token for your Telegram bot. You create a bot through Telegram's BotFather and receive this token. | | **Telegram Chat ID** | No | The chat ID (user ID or group ID) where the Telegram bot should send notifications. | ### Setting Up Email Handoff Notifications 1. Navigate to **Settings > Notifications**. 2. In the **Handoff Notifications** card, enter the email address in the **Notification Email** field. 3. Click **Save Notification Settings**. 4. A confirmation indicator will appear when saved successfully. ### Setting Up Telegram Handoff Notifications To receive handoff alerts on Telegram, you need to create a Telegram bot and configure it here. 1. **Create a Telegram Bot:** 1. Open Telegram and search for **@BotFather**. 2. Send the command `/newbot` and follow the instructions to name your bot. 3. BotFather will provide you with an **API token** (a long string like ``). 2. **Get Your Chat ID:** 1. Start a conversation with your new bot on Telegram. 2. Send any message to the bot. 3. To find your chat ID, open `https://api.telegram.org/bot/getUpdates` in a browser (replace `` with your actual token). 4. Look for the `"chat":{"id":` value in the response -- that is your chat ID. 5. For group notifications, add the bot to your group and use the group's chat ID (usually a negative number). 3. **Configure in Dashboard:** 1. Enter the **Telegram Bot Token** in the corresponding field. 2. Enter the **Telegram Chat ID** in the corresponding field. 3. Click **Save Notification Settings**. > **Info:** You can configure both email and Telegram notifications simultaneously. When a handoff occurs, notifications will be sent through all configured channels. ### How to Update or Remove Handoff Notification Settings 1. To update, simply change the field values and click **Save Notification Settings**. 2. To remove a notification channel, clear the corresponding field(s) and click **Save Notification Settings**. > **Warning:** If you enter an invalid Telegram Bot Token or Chat ID, notifications will fail silently. Make sure to test your bot by sending a message through Telegram's API before relying on it for handoff alerts. --- Source: https://directsale.ai/help/settings/checkout # Checkout The **Checkout** tab lets you configure how customers complete purchases. You can choose between a fully hosted checkout (managed within the platform) or an external cart sync that integrates with your existing e-commerce store. When using hosted checkout, you can add and manage multiple payment gateways. ## Payment region Available new payment options follow tenant currency: IRR/IRT offers Iranian gateways, while other currencies offer international gateways. Cash on delivery remains available where enabled. Dashboard and chatbot language do not change these options. Each gateway still requires plan access, valid merchant configuration and supported currency; changing currency does not create a merchant account or enable an unconfigured gateway. Existing configured gateways remain visible for management. Orders, appointment deposits and in-progress payment verification keep their recorded currency after a tenant currency change. ## Checkout Configuration The main Checkout card contains the master toggle, mode selection, and store slug settings. Receiving money from your customers is separate from paying for your own DirectSale subscription in Billing. ### Enable / Disable Checkout The first option is a toggle switch to enable or disable the checkout feature entirely. - **Enabled (blue):** Customers can add products to cart and complete purchases through your storefront or chatbot. - **Disabled (gray):** The checkout functionality is hidden. Products can still be browsed, but customers cannot place orders. ### Checkout Mode When checkout is enabled, you choose between two modes: | Mode | Description | |------|-------------| | **Hosted Checkout** | The platform handles the entire checkout process. Customers complete their purchase on your storefront, and you configure payment gateways directly in the dashboard. | | **External Cart Sync** | Products selected in the chatbot or storefront are synced to your external e-commerce store (e.g., WooCommerce or a custom API), and the customer completes checkout on your own website. | ### Store Slug The **Store Slug** field defines a URL-friendly identifier for your store. It accepts only lowercase letters, numbers, and hyphens. - In **Hosted Checkout** mode, use the actual checkout link created for the customer/cart; do not construct payment links from a guessed store URL. The slug does not allocate a permanent public storefront subdomain. - In **External Cart Sync** mode, the slug is still saved but is primarily used for internal identification. ### How to Configure Basic Checkout Settings 1. Navigate to **Settings > Checkout**. 2. Toggle **Enable Checkout** to on. 3. Select your preferred **Checkout Mode** (Hosted or External Cart Sync). 4. Enter a **Store Slug** (e.g., `my-store`). 5. Click **Save Settings**. --- ## Hosted Checkout: Payment Gateways When you select **Hosted Checkout** mode, a second card appears for managing your payment gateways. You can add multiple gateways and designate one as the default. ### Supported Payment Gateways | Gateway | Credentials Required | Description | |---------|---------------------|-------------| | **Cash on Delivery (COD)** | None | Customers pay when the order is delivered. No API credentials needed. | | **Stripe** | Secret Key | International credit and debit card processing. Requires a Stripe account and your secret API key (starts with `sk_live_`). | | **PayPal** | Client ID + Client Secret | Global payment processor supporting PayPal balance, credit cards, and local payment methods. Requires your PayPal API credentials. | | **Square** | Access Token | In-person and online payments. Requires a Square developer access token (starts with `EAAAl`). | | **Mollie** | API Key | European payment processor supporting iDEAL, Bancontact, credit cards, and more. Requires a Mollie API key (starts with `live_`). | | **Bale Pay** | Dedicated payment bot token, bot username and wallet provider token | Eligible Iranian hosted payments; use a separate payment bot, not your support bot. | | **Zarinpal / Zibal** | Merchant identifier | Available for eligible Iranian payment configuration. | | **Pay.ir / IDPay** | Provider API key | Available for eligible Iranian payment configuration. | | **SnappPay** | Merchant Client ID, Client Secret, Username and Password | Eligible hosted product purchases; merchant approval and stage testing are required. | Additional installment/BNPL options may be shown for eligible merchants. They require their own provider contract and the exact credentials/endpoints requested by the form; availability is not approval for a merchant account. ### Bale Pay setup and successful payment 1. Confirm the tenant uses IRR or IRT and has the required checkout access. 2. Create a dedicated Bale payment bot and obtain the required wallet provider token from the payment provider. 3. Choose Bale Pay, enter the payment bot token, its username and provider token, then save. Never paste these credentials into Help or public content. 4. Use Test Connection on the configured Bale Pay gateway and follow its result. Connection success is not a completed payment. 5. Test the full customer checkout using the provider's supported test procedure. After returning from Bale, wait for the platform to verify payment and show the actual result. Bale supports one webhook per bot, so reusing a support bot for payments can disrupt one of the integrations. Payments settle to the wallet associated with the configured provider token. Configuring this merchant gateway does not change the gateway that bills your DirectSale subscription. If the customer returns to a waiting checkout page, inspect payment/order status before asking them to pay again. A return redirect or a customer screenshot alone does not prove settlement. In-progress payments retain their original currency context. Receipt/invoice availability and email delivery depend on successful verification and the relevant order/contact configuration. ### SnappPay setup and settlement Use the four credentials from the merchant portal's technical access section. The earlier Application ID and subscription key fields cannot connect to the Iranian merchant API. Register your API server IP and callback URL with SnappPay, then use the exact API origin supplied for your merchant environment. See the [official merchant guide](https://academy.snapppay.ir/self-cms/). SnappPay appears for eligible product purchases after the provider checks the amount. The provider determines available credit and installment terms. Prices remain in the order's IRR/IRT currency; toman converts once to rials for the API. The result page waits for server confirmation of Verify and Settle and supports returning to the same order after closing the provider page. A waiting result does not mean the customer should create another payment. Confirmed purchases post to a separate **SnappPay receivable** account. Record actual bank payouts as Treasury transfers after comparing the provider statement, and reconcile fees separately. Purchase confirmation is not a bank deposit. DirectSale subscription billing and appointment deposits do not use this option. Provider cancellations and partial order changes are not automated here. Complete them in the merchant portal and reconcile the order and accounting records; changing a local order alone does not refund the provider payment. Merchant stage tests and the provider's required Cancel/Update integration are still required before this connection can be certified for production use. ### Adding a Payment Gateway 1. In the **Payment Gateways** card, click the **Add** button. 2. A form will appear with a **Gateway Type** dropdown. Select the gateway you want to add. 3. If the selected gateway requires credentials, fill in the required fields: - **COD:** No fields required. - **Stripe:** Enter your **Secret Key**. - **PayPal:** Enter your **Client ID** and **Client Secret**. - **Square:** Enter your **Access Token**. - **Mollie:** Enter your **API Key**. - **Bale Pay:** Enter the dedicated bot token, username and wallet provider token. - **Iranian merchant gateways:** Enter the merchant ID or API key requested by the selected provider. 4. Click the **Add Gateway** button. 5. The gateway will appear in the list. If it is the first gateway, it will automatically be set as the default. > **Info:** The first payment gateway you add is automatically set as the default. You can change the default at any time. ### Managing Existing Gateways Each configured gateway is displayed as a card showing the gateway name and its default status (if applicable). #### Available Actions | Action | Icon | Description | |--------|------|-------------| | **Set as Default** | Star | Makes this the default payment method shown to customers. Only available on non-default gateways. | | **Edit Credentials** | Pencil | Opens an inline form to update the API keys or tokens for this gateway. Not available for COD (no credentials needed). | | **Remove** | X | Deletes the gateway after a confirmation dialog. | ### Editing Gateway Credentials 1. Click the **Edit** (pencil) icon on the gateway you want to update. 2. An inline form will expand below the gateway name. 3. Enter the new credentials. Leave fields blank to keep the existing values. 4. Click **Update** to save, or **Cancel** to discard changes. ### Setting the Default Gateway 1. Click the **Star** icon on the gateway you want to make the default. 2. The selected gateway will be marked with a "Default" badge and will be pre-selected for customers during checkout. ### Removing a Gateway 1. Click the **X** icon on the gateway you want to remove. 2. Confirm the action in the dialog that appears. 3. The gateway will be permanently removed. > **Warning:** Removing a payment gateway that is currently the default will require you to set a new default. Make sure you have at least one active gateway configured, or customers will not be able to complete purchases. --- ## External Cart Sync When you select **External Cart Sync** mode, the platform synchronizes the customer's cart to an external e-commerce system. A mode selection card appears where you choose between WooCommerce and Custom API integration. ### Integration Type | Type | Description | |------|-------------| | **WooCommerce** | Automatic integration with your connected WooCommerce store. The platform creates orders directly in WooCommerce when customers check out. | | **Custom API** | Connect to any e-commerce platform by providing an API endpoint that accepts cart data. | --- ### WooCommerce Integration If you have a WooCommerce connection set up (configured in the Integrations section), the platform can create orders directly in your WooCommerce store. #### Prerequisites - A WooCommerce store connected via the **Integrations** section of the dashboard. - Products in your catalog must have matching `externalProductId` values that correspond to WooCommerce product IDs. #### How It Works The WooCommerce checkout flow follows three steps: 1. **Customer adds products to cart** -- The chatbot or storefront collects the customer's product selections. 2. **Order is created in WooCommerce** -- When the customer checks out, the platform creates a WooCommerce order with the selected items using your WooCommerce API connection. 3. **Customer completes payment** -- The customer is directed to your WooCommerce store to complete payment using whatever payment methods you have configured there. #### Configuration 1. Select **WooCommerce** as the integration type. 2. If a WooCommerce connection is detected, a green confirmation message will appear showing the connection name and store URL. 3. Click **Save Configuration** to apply the settings. > **Info:** When using WooCommerce mode, you do not need to configure any additional API URLs or keys. The platform uses your existing WooCommerce connection automatically. No separate API configuration is needed. If no WooCommerce connection is found, an amber warning will prompt you to set up a connection first in the Integrations section. --- ### Custom API Integration The Custom API option lets you connect to any e-commerce system by configuring an API endpoint. #### How It Works 1. **Customer selects products** -- Products are collected through the chatbot or storefront. 2. **Cart is sent to your API** -- The platform sends a POST request to your Cart API URL with the cart contents. 3. **Your API processes the cart** -- Your system creates a cart/order and returns a response. 4. **Customer is redirected** -- The customer is redirected to your Checkout Page URL to complete payment. #### Configuration Fields | Field | Required | Description | |-------|----------|-------------| | **Cart API URL** | Yes | The full URL of your API endpoint that accepts cart data (e.g., `https://yourstore.com/api/cart`). The platform will POST cart items to this URL. | | **API Key / Auth Token** | No | An authentication token included in API requests. If your API requires authentication, provide the token here. The value is stored securely and masked after saving. | | **Checkout Page URL** | Yes | The URL where customers are redirected after the cart is synced to complete their purchase (e.g., `https://yourstore.com/checkout`). | | **Product ID Field** | No | Which product identifier field to use when sending cart data to your API. | #### Product ID Field Options | Option | Description | |--------|-------------| | **External Product ID** | Uses the `externalProductId` field from your product catalog. Best for synced products that have matching IDs in your external store. | | **ID** | Uses the platform's internal product UUID. Best if your external system references products by the DirectSale product ID. | | **SKU** | Uses the product's SKU code. Best if your external system tracks products by SKU. | | **Slug** | Uses the product's URL slug. Best for systems that identify products by their URL-friendly name. | #### How to Configure Custom API 1. Select **Custom API** as the integration type. 2. Review the "How It Works" guide that explains the four-step flow. 3. In the **API Configuration** card: 1. Enter the **Cart API URL** (required). 2. Optionally enter an **API Key / Auth Token** for authentication. 3. Enter the **Checkout Page URL** (required). 4. Select the appropriate **Product ID Field** from the dropdown. 4. Click **Save Configuration**. > **Warning:** Make sure your Cart API URL is publicly accessible and can handle POST requests from the DirectSale servers. If your API requires IP whitelisting, contact support for the list of outgoing IP addresses. --- Source: https://directsale.ai/help/settings/data-privacy # Data Privacy The **Data Privacy** tab gives you control over your personal and business data. From here you can export all of your data, delete conversation history, or permanently delete your entire account. These tools help you comply with data protection regulations and manage your data lifecycle. ## Overview The Data Privacy card contains three actions, presented in order from least destructive (export) to most destructive (account deletion): | Action | Risk Level | Description | |--------|------------|-------------| | **Export My Data** | None | Downloads a JSON file containing all your account data. | | **Delete All Conversations** | Medium | Permanently removes all chatbot conversations and message history. | | **Delete Account** | Critical | Permanently deletes your entire account and all associated data. | --- ## Export My Data The data export feature creates a complete JSON file of all your account data, making it easy to review what information the platform stores about you. ### What Is Included in the Export The export contains your full account data, including (but not limited to): - Account profile and settings - Products and categories - Conversations and messages - Orders and transactions - Team member information - Integration configurations ### How to Export Your Data 1. Navigate to **Settings > Data Privacy**. 2. In the **Export My Data** section, click the **Export Data** button. 3. The button will show a loading spinner while the export is being prepared. 4. Once ready, a JSON file will be automatically downloaded to your browser's default download location. 5. The file will be named `data-export-YYYY-MM-DD.json`, where the date reflects the day of the export. > **Info:** The export may take a few seconds depending on the amount of data in your account. The file is generated server-side and downloaded as a single JSON file. --- ## Delete All Conversations This action permanently removes all chatbot conversations and their messages from your account. This can be useful if you want to clear out historical data without deleting your entire account. ### What Gets Deleted - All customer conversations - All messages within those conversations - Associated conversation metadata (timestamps, customer info, etc.) ### What Is NOT Deleted - Products and categories - Orders and transactions - Account settings and integrations - Team members ### How to Delete All Conversations 1. Navigate to **Settings > Data Privacy**. 2. In the **Delete All Conversations** section (highlighted with a yellow/amber border), click the **Delete Conversations** button. 3. A browser confirmation dialog will appear asking you to confirm the action. 4. Click **OK** to proceed or **Cancel** to abort. 5. If confirmed, all conversations will be deleted and you will see a success message. > **Warning:** This action is irreversible. Once conversations are deleted, they cannot be recovered. Consider exporting your data first if you might need the conversation history later. --- ## Delete Account Account deletion permanently removes your entire account and all associated data from the platform. This is the most destructive action available and includes multiple safeguards to prevent accidental deletion. ### What Gets Deleted Everything associated with your account, including: - Account profile and credentials - All products, categories, and media - All conversations and messages - All orders and transactions - All team members and their access - All integrations and API keys - All settings and configurations - All backups stored on the platform ### How to Delete Your Account 1. Navigate to **Settings > Data Privacy**. 2. In the **Delete Account** section (highlighted with a red border), click the **Delete Account** button. 3. A confirmation panel will replace the button, displaying a text input field. 4. Type the word **DELETE** (in capital letters, exactly as shown) into the text field. 5. Click the **Confirm Delete** button. The button remains disabled until you type "DELETE" exactly. 6. If successful, you will be logged out and redirected to the login page. > **Note:** Account deletion is permanent and cannot be undone. There is no grace period and no way to recover your data after deletion. Make sure you have exported any data you need before proceeding. ### Safeguards The account deletion process includes several layers of protection: 1. **Two-click process** -- You must first click the initial "Delete Account" button, then confirm in a separate step. 2. **Text confirmation** -- You must type "DELETE" exactly to unlock the confirm button. 3. **Disabled by default** -- The final confirm button is disabled until the correct text is entered. > **Info:** If you want to keep your account but need assistance with data-related concerns, contact the support team instead of deleting your account. The support team can help with specific data requests without requiring full account deletion. --- Source: https://directsale.ai/help/settings/backup # Backup & Restore The **Backup & Restore** tab lets you export supported central account data, download backup archives, restore from a previously created backup, and view backup and restore history. It is not a VPS disk image or an email backup. ## Overview The page is divided into three cards: | Card | Description | |------|-------------| | **Create Backup** | Start a new full data export. The backup is packaged as a ZIP file and automatically downloaded. | | **Restore from Backup** | Upload a previously downloaded backup ZIP file to restore your data. | | **Backup History** | View a table of all past backup and restore operations with their status, size, and download links. | --- ## Create Backup Creating a backup exports all of your account data into a ZIP archive. The backup runs on the server and you can watch its progress in real time. ### What Is Included in a Backup A central account backup includes supported account records such as: - Products, categories, and media references - Conversations and messages - Orders and transactions - Customer data - Settings and configurations - Team members - Integrations Passwords, login sessions, subscription/payment-provider billing records and platform administrator settings are not an account recovery export. Integration records can contain private credentials: keep the archive secure and verify connections after restoration. This workflow exports media references and does not guarantee an independent copy of every remotely hosted file. For catalog image files, use [Products > Export Backup](https://directsale.ai/help/products/catalog-backup). Back up the VPS website and mailbox messages through their separate tools. ### How to Create a Backup 1. Navigate to **Settings > Backup & Restore**. 2. In the **Create Backup** card, click the **Create Backup** button. 3. A progress bar will appear showing the current step and percentage completion. 4. Wait for the backup to reach 100%. The progress is updated every 3 seconds. 5. Once completed, the backup ZIP file will be automatically downloaded to your browser. 6. A green success message will confirm the backup was created successfully. ### Backup States | State | Description | |-------|-------------| | **Pending** | The backup has been queued and will start shortly. | | **Exporting** | Data is being collected and packaged. A progress bar shows the current step and percentage. | | **Completed** | The backup is ready. The ZIP file is automatically downloaded. | | **Failed** | The backup encountered an error. An error message will be displayed with details. | > **Info:** If the automatic download fails after a successful backup (e.g., due to a popup blocker), you can manually download the backup from the Backup History table at the bottom of the page. --- ## Restore from Backup The Restore feature lets you upload a previously downloaded backup ZIP file to replace your current data. > **Warning:** Restoring from a backup will **overwrite your current data** with the contents of the backup file. This action cannot be undone. Make sure you have a current backup of your existing data before proceeding. ### How to Restore from a Backup 1. Navigate to **Settings > Backup & Restore**. 2. In the **Restore from Backup** card, click the file input and select a `.zip` backup file from your computer. 3. Click the **Restore** button. 4. A confirmation dialog will appear with a warning that restoring will overwrite your current data. 5. Click **Yes, Restore** to confirm, or **Cancel** to abort. 6. If confirmed, a progress bar will appear showing the restore progress (updated every 3 seconds). 7. Once the restore is complete, a success message will confirm the operation. ### Restore States | State | Description | |-------|-------------| | **Importing** | Data from the backup file is being applied. A progress bar shows the current step and percentage (displayed with an orange progress indicator). | | **Completed** | The restore is finished. All data from the backup has been applied. | | **Failed** | The restore encountered an error. An error message will be displayed. Your data may be in a partially restored state. | ### Accepted File Format - Only `.zip` files are accepted. - The file must be a backup previously created by the DirectSale platform. - Uploading an invalid or corrupted file will result in an error. --- ## Backup History The Backup History card displays a table of all backup and restore operations for your account, with the 20 most recent entries shown. ### Table Columns | Column | Description | |--------|-------------| | **Date** | The date and time when the backup or restore operation was initiated. | | **Type** | Either **Export** (backup creation) or **Import** (restore from backup). Exports are shown with a blue badge, imports with an orange badge. | | **Status** | The current state of the operation. Color-coded: green for completed, red for failed, yellow for pending/in-progress. | | **Size** | The file size of the backup archive (displayed in human-readable format: B, KB, MB, or GB). Shows a dash if size is not available. | | **Actions** | Available actions for each entry. | ### Available Actions per Entry | Action | Icon | Availability | Description | |--------|------|--------------|-------------| | **Download** | Download arrow | Completed exports only | Download the backup ZIP file to your computer. | | **Delete** | Trash | All entries | Remove the backup record and its associated file from the server. | ### How to Download a Previous Backup 1. In the **Backup History** table, find the backup you want to download. 2. Make sure the **Type** is "Export" and the **Status** is "Completed." 3. Click the **Download** button (download arrow icon) in the Actions column. 4. The ZIP file will be downloaded to your browser. ### How to Delete a Backup Record 1. In the **Backup History** table, find the entry you want to remove. 2. Click the **Delete** button (trash icon) in the Actions column. 3. The record will be removed from the list and the associated file (if any) will be deleted from the server. > **Info:** Deleting a backup record from the history does not affect your current account data. It only removes the backup file from the server. If you have already downloaded the backup to your computer, that local copy is unaffected. --- ## Best Practices 1. **Create regular backups** -- Before making major changes to your product catalog, settings, or integrations, create a backup so you can roll back if needed. 2. **Download and store backups locally** -- Do not rely solely on server-stored backups. Download the ZIP file and save it in a secure location. 3. **Test restores carefully** -- Before restoring, make sure you understand that it will overwrite your current data. Always create a fresh backup of your current state first. 4. **Monitor backup sizes** -- As your account grows, backup files will increase in size. Review your backup history periodically and delete old entries you no longer need. --- Source: https://directsale.ai/help/settings/appearance-integrations # Dashboard Appearance and Account Integrations Open **Settings** and select Appearance or Integrations. These settings are separate from the storefront design and storefront tracking integrations. ## Dashboard appearance 1. Open Appearance and review the available dashboard styles. 2. Select the desired style and wait for its save/confirmation. 3. Choose the offered light, dark or system color mode. 4. Use the reset/default action if you want the inherited platform appearance. 5. Navigate to another dashboard page and verify readability and saved appearance. Appearance changes do not translate product content, change chatbot response language or alter the storefront theme. Use [Storefront Design](https://directsale.ai/help/storefront/design) for customer-facing styling. ## Standard and simplified forms Open **Settings > Appearance > Form experience** and choose **Standard forms** or **Simplified forms**. Wait for the saved confirmation. This preference is separate from the dashboard style, navigation layout and light/dark mode. - **Standard forms** shows all available settings and remains the default during the beta. - **Simplified forms** shows essential inputs first. Open **Advanced settings** inside a supported form to reveal optional SEO, AI, media and technical controls. - **Use inherited default** clears your personal choice and follows the tenant default, then the platform default. The preference is personal: it does not force other team members to use your mode. Closing Advanced settings hides inputs without deleting their saved values. Inputs required for the selected task remain visible, and short or specialist forms may not need an Advanced control. Form controls use the selected panel language across the 18 supported languages. Simplified mode covers the main catalog, services, content, storefront, shipping, notifications, widget, Chat Studio, connections, checkout and Auto Replies workflows. If a field seems missing, open Advanced settings or switch to Standard forms. Changing the form experience does not change permissions, plan allowances or public website content. During administrator impersonation, mode changes are a local preview and are not saved as the tenant's preference. ## Account API key The Integrations tab shows the current key's masked state and creation information, where available. 1. Generate a key only when you need it for an authorized integration. 2. Copy the newly displayed value into the intended integration securely. 3. Treat Regenerate as a key rotation: existing clients using the old key may stop working. 4. Revoke only when you intend to disable access through that key. 5. Test the specific integration after rotation or revocation. Never place keys in Business Profile, Knowledge Base articles, public source code or support screenshots. A masked key display is not the full secret. Domain allowlists and other authorization requirements still apply. ## Connection summaries Review commerce and messaging connection summaries in this tab, then use their dedicated management screens for setup and diagnostics. An account key is not a marketplace token or a payment-gateway merchant key. ## Verification and troubleshooting If style changes do not persist, check save errors and the selected account. If an integration breaks after rotation, update its configured key and verify its allowed domain/permissions. Do not regenerate repeatedly while investigating a network failure. See [Widget](https://directsale.ai/help/widget/index), [Connections](https://directsale.ai/help/multichannel/connecting-channels), [Messaging Channels](https://directsale.ai/help/channels/index) and [Storefront Integrations](https://directsale.ai/help/storefront/integrations). --- Source: https://directsale.ai/help/settings/notification-center # Notification Center and Delivery Recipients Use **Notifications** to read platform events. Use **Notifications > Settings** to choose where operational alerts are delivered. Reading a notification is not taking the related order, invoice or conversation action. ## Read and manage notifications 1. Open the notification list or bell. 2. Apply the offered filters and inspect the event, time and related record. 3. Mark an item read after reviewing it, or use Mark all read when appropriate. 4. Open the relevant order/conversation/record to perform its actual workflow. ## Configure recipients 1. Open Notifications Settings. 2. Review the enabled delivery channels and recipient list. 3. Add or edit recipient labels and the channel-specific address or chat identifier. 4. Enable only the event types needed by that recipient/team. 5. Save and use the recipient's Test action. 6. Confirm the test arrives at the intended destination, then check one real authorized event. Tests send an actual message and can save current recipient configuration. Do not test with an unrelated customer's email or chat ID. Bale notification options depend on the tenant's currency region. ## Event types Events include orders, low/out-of-stock, sync/webhook errors, approval needed, payment received, human handoff, reviews, shipping and appointments where supported. Sales events include product interest, no-result search, added-to-cart, abandoned cart, checkout started, contact request and checkout failure. A checkout-started alert is not a payment-received alert. Product interest is not a completed sale. Select events carefully to avoid overwhelming the operational team. ## Verification and troubleshooting No delivery: confirm the recipient is saved/enabled, correct address/chat, selected event type and delivery-provider configuration. In-panel notification present but external alert missing means these separate delivery paths need comparison. Marking all read does not cancel deliveries already sent. If an alert contains a record reference, compare it with the original record and timestamp before acting. Review privacy before sharing customer details with additional recipients. See [Human Handoff](https://directsale.ai/help/conversations/managing-conversations) and [Support](https://directsale.ai/help/getting-started/support). --- Source: https://directsale.ai/help/billing/index # Billing & Subscription The Billing page is your central hub for managing your subscription, monitoring usage quotas, viewing invoices, and switching between plans. Monthly and yearly prices are configured separately for each supported currency. The available payment path depends on the selected currency and enabled billing provider; do not assume every plan uses Stripe. ## Accessing Billing Navigate to **Dashboard > Billing** from the sidebar. --- ## Current Plan The **Current Plan** card on the left shows your active subscription details: | Field | Description | |-------|-------------| | **Plan** | The name of your current plan (e.g., Trial, Starter, Professional, Enterprise). | | **Type** | The plan category -- Chat, Website, or Bundle. | | **Status** | Whether the plan is Active, on a Trial, or Expired. For trial plans, shows days remaining. | | **Trial Ends / Renews / Cancels** | The next important date for your subscription. | ### Billing Period If you have an active paid subscription, you can toggle between **Monthly** and **Yearly** billing directly from this card. Switching takes effect at the next billing cycle. ### Management Actions - **Manage Billing** -- Opens the Stripe Customer Portal where you can update payment methods, view invoices, and manage your subscription. - **Cancel Subscription** -- Cancels your subscription at the end of the current billing period. You retain access until the period ends. > **Info:** When you cancel a subscription, it remains active until the end of the current billing period. You will not be charged again, but access continues until that date. --- ## Usage & Limits The **Usage & Limits** section shows real-time quota consumption for your account: The Usage page also shows a dedicated **AI reply quota** card using this same subscription counter. One AI-generated customer response consumes one unit. Incoming customer messages, human replies and predefined Auto Reply sends do not consume this allowance; the separate Incoming, Outgoing and Total Messages cards are activity statistics. | Quota | Description | |-------|-------------| | **AI replies** | Monthly allowance of AI-generated customer answers, not incoming customer messages or unique customers. Shows used/limit with a progress bar. | | **Products** | Number of products in your catalog versus the plan limit. | | **Voice Minutes** | Minutes of voice-to-text and text-to-speech processing used. | | **AI Images** | One shared monthly allowance for Generate All images, Replace BG and new background previews. Uploads use a separate limit. | | **Website Pages** | Number of storefront/website pages (if applicable to your plan). | | **Storage** | Media storage used in MB/GB versus your plan limit. | ### What the allowance labels mean - **500 messages/mo** means 500 AI-generated replies per month. It does not mean only 500 incoming customer messages, 500 customers, or 500 individual internal model calls. - **Predefined Auto Reply sends** are free of DirectSale AI-reply charges, have no monthly send allowance, and do not consume AI reply credits. They can continue after the AI reply allowance is exhausted. Limits on the number of saved rules, files per rule, storage, security/rate limits, and any external messaging-provider charges are separate. - **30 STT / 30 TTS min** means two separate monthly allowances. STT (Speech-to-Text) converts received speech to text; TTS (Text-to-Speech) produces spoken audio. Thirty minutes of each is not a shared 60-minute pool and does not mean 30 voice messages. - **1 widget domain** means one authorized website domain for embedding the chat widget under the domain settings. It is not one page, one visitor, or an included domain registration. Multiple widget domains share the tenant's subscription allowances. - **Products**, **pages**, and **team members** describe stored catalog capacity, website content pages, and panel team capacity respectively; they are not monthly sales, page views, or chat visitors. - **Storage (MB)** measures stored files, not monthly traffic. AI image, description, blog and page-content credits are separate generation allowances, not chat reply credits. - Monthly allowances follow the account quota-reset schedule, including on annually billed subscriptions. ### Currency and current prices The supported price currencies are USD, EUR, GBP, IRR (Iranian rial), and IRT (Iranian toman). Each currency has its own configured amount; no live exchange-rate calculation is implied. A yearly price is the total annual charge, not a monthly charge. If a currency or yearly price is not configured, do not derive one from another price. Official support assistants may be enabled by an administrator to explain selected DirectSale plans in selected currencies. The administrator chooses from active direct-customer plans independently of the public pricing-page list; sharing plan information does not change checkout eligibility or payment methods. The assistant's live plan lookup checks current prices and availability; old guide examples and earlier conversation prices are not current quotes. Zero or empty paid-plan prices are not free offers. If no approved plan has a valid price in the requested currency, the assistant cannot quote it; this does not mean the platform has no subscription plans. The customer's language does not determine their currency. When no currency is requested, the support assistant uses its configured default. In the tenant Billing UI, IRR/IRT tenants see configured rial/toman subscription prices and Iranian payment options. Other tenant currencies see USD/EUR/GBP prices and international options. Dashboard and chatbot language do not select the payment region. Existing subscription management and payment history remain accessible after a currency change; changing tenant currency does not convert prices or cancel a subscription. ### Progress Bar Colors | Color | Meaning | |-------|---------| | **Green** | Under 50% usage -- healthy. | | **Blue** | 50-80% usage -- moderate. | | **Amber** | 80-100% usage -- approaching limit. | | **Red** | Over 100% -- limit exceeded. | ### Reset Date Usage quotas reset monthly. The reset date is displayed at the top of the usage section. > **Warning:** When a quota is exceeded, the corresponding feature is temporarily disabled until the quota resets or you upgrade your plan. For example, exceeding your message limit will pause chatbot responses. --- ## Usage Charts Two charts provide visual usage insights: ### Message Trend (Last 7 Days) A bar chart showing daily message volume for the past week. Below the chart: - **Total** -- Sum of all messages in the 7-day period. - **Avg Per Day** -- Average daily message count. ### Platform Breakdown Shows how messages are distributed across platforms (Web, Telegram, WhatsApp, Instagram, etc.) for the current month. Each platform has a colored progress bar showing its share. --- ## Choosing a Plan ### Plan Categories Plans are organized into three categories: | Category | Description | |----------|-------------| | **Chat** | Plans focused on AI chatbot capabilities -- message limits, voice, and messaging platform access. | | **Website** | Plans for the storefront/website builder -- product limits, storage, pages, and AI images. | | **Bundle** | Combined Chat + Website plans at a discounted rate. | Click the category tabs to browse plans in each category. ### Monthly vs. Yearly Billing Toggle between **Monthly** and **Yearly** at the top of the plans section. Yearly plans offer a discount (typically shown as a percentage badge). > **Info:** Yearly billing saves you money -- look for the green savings percentage badge on each plan card. ### Plan Features Each plan card displays: - **Price** -- Monthly cost (or monthly equivalent for yearly plans). - **Feature List** -- Included capabilities such as: - Messages per month - Voice messaging minutes - Number of platforms - Product limits - Storage - Website pages - AI image generation - Team members - Custom branding and domain - Priority support - API access ### Upgrading or Downgrading 1. Find the plan you want. 2. Click the **Upgrade** or **Downgrade** button. 3. For paid plans: - If Stripe is configured, you will be redirected to a Stripe Checkout page to enter payment details. - If you already have an active Stripe subscription, the plan change takes effect immediately (prorated). The Trial plan is granted once when an account is created. It cannot be selected again or renewed, and there is no permanent free subscription plan. ### Plan Indicators | Indicator | Meaning | |-----------|---------| | **Current Plan** (outlined button) | This is your active plan. | | **Most Popular** (purple badge) | The plan recommended for most users. | | **Upgrade** (green button with up arrow) | Upgrade to a higher-tier plan. | | **Downgrade** (orange outline with down arrow) | Switch to a lower-tier plan. | --- ## Invoices If you have paid invoices, they appear in the **Invoices** section: | Column | Description | |--------|-------------| | **Invoice Number** | Unique invoice identifier. | | **Amount** | The total amount charged. | | **Status** | Paid, Sent, or Draft. | | **Date** | When the invoice was issued. | | **PDF** | Click the download icon to save the invoice as a PDF. | --- ## Payment History The **Payment History** table shows all payment transactions: | Column | Description | |--------|-------------| | **Date** | When the payment was made. | | **Amount** | The amount charged. | | **Gateway** | The payment processor used (e.g., Stripe). | | **Status** | Paid, Pending, or Failed. | --- ## Trial Period New accounts start with a free trial. During the trial: - A **trial countdown banner** appears at the top of the billing page showing days remaining. - When the trial has 3 or fewer days remaining, the banner turns red. - When the trial expires, your account is suspended. Business features remain unavailable until you upgrade to a paid plan. > **Info:** Upgrade before your trial ends to ensure uninterrupted service. You can upgrade at any time during the trial. --- ## Alerts and Warnings The billing page displays contextual warnings: | Alert | Description | |-------|-------------| | **Limits Exceeded** (red banner) | One or more quotas have been exceeded. An upgrade is recommended. | | **Approaching Limits** (amber banner) | Usage is above 80% on one or more quotas. | | **Cancellation Scheduled** (orange banner) | Your subscription is set to cancel at the end of the current period. | | **Payment Success** (green banner) | Shown after the API confirms the tenant-owned payment. A redirect alone is not proof of payment. | | **Payment Canceled** (amber banner) | Shown if you canceled the checkout process. | ## Troubleshooting ### Returning from a payment provider For prepaid Zarinpal or Bale subscriptions, the callback page checks the saved payment and displays checking, completed, pending, error or accounting review. Use **Retry** for pending or unavailable confirmation, then **Back to Billing** to inspect the subscription and payment history. An accounting review means the receipt was recorded but applying access requires investigation; do not buy again to resolve it. Keep the payment reference when contacting support. Older Stripe success links redirect to Billing with their checkout session identifier. Billing verifies that identifier with the API before showing success. Neither opening a success URL nor refreshing it creates a new paid subscription. | Issue | Solution | |-------|----------| | Payment fails at checkout | Verify your card details and that your bank is not blocking the transaction. | | Plan not changing after payment | Wait a moment and refresh the page. Contact support if it persists. | | Quota not resetting | Quotas reset on a monthly cycle from your subscription start date, not the calendar month. | | Cannot downgrade | Ensure your current usage fits within the lower plan's limits (e.g., reduce products if exceeding the lower plan's product limit). |