add_crm_note
ChatGPTAdd an internal note to the CRM timeline (record history) of a contact, company or deal. Only the team sees it; nothing is sent to the customer. Optionally mention team members (user ids from get_moderators) and pin it to the top.
add_deal_item
ChatGPTAdd a line item (a catalog product or a free line) to a deal: quantity, unit price, discount % and VAT %. When the deal is set to use its items total as the amount, the deal amount is updated. Nothing is sent to the customer.
add_note
ChatGPTAdd an internal note to a conversation — visible only to the merchant's team in the LetsBot inbox, never sent to the customer. Use it to leave context for colleagues (e.g. "customer wants a refund, waiting for the warehouse"). A note does not count as a reply to the customer. To alert teammates, mention them: write @Name in the body (e.g. "@Sara please call the customer") or pass their ids or names in "mentions" — each mentioned teammate is notified in the inbox and on their phone.
add_ticket_note
ChatGPTAdd an internal note to a support ticket's timeline, visible to the team only. It is never sent to the customer — to reply to them use the messaging tools.
ai_analyze_contact
ChatGPTReturn a contact profile and recent conversation sample so the assistant can analyze the customer (engagement level, interests, recommendations). The assistant performs the analysis on the returned data.
ai_dashboard_summary
ChatGPTReturn key dashboard metrics (contact counts, conversations awaiting a reply, active moderators, today's activity, recent contacts) plus guidance so the assistant can write an interpreted summary. The tool itself only computes the counts. It reports no read/unread state: nothing here indicates what the merchant has opened or seen on their own device.
ai_improve_message
ChatGPTReturn a draft message together with the desired tone and context so the assistant can rewrite it (grammar, tone, clarity) while keeping the original intent. The assistant produces the improved version.
ai_sentiment_analysis
ChatGPTReturn the customer messages of a conversation so the assistant can analyze sentiment (positive, negative, or neutral) and emotional indicators. The assistant performs the sentiment analysis on the returned messages.
ai_suggest_reply
ChatGPTReturn the recent conversation and contact context so the assistant can draft suggested replies. The assistant generates the reply suggestions from the returned context (nothing is sent).
ai_summarize_conversation
ChatGPTReturn the recent conversation history with a contact so the assistant can summarize it (key topics, issues, and outcomes). The assistant writes the summary from the returned messages.
ai_translate_message
ChatGPTReturn a message together with the requested target language so the assistant can translate it. The assistant produces the translation.
archive_contact
ChatGPTArchive or unarchive a contact chat.
assign_label
ChatGPTAssign or remove a label from a contact. Toggles the label — if already assigned it will be removed, if not assigned it will be added.
assign_moderator
ChatGPTAssign a team member (moderator) to a conversation, or remove them from it. Pass action=assign or action=unassign to say which; without action the call toggles (adds if absent, removes if present). The assigned member is notified. To move many conversations from one member to another at once, use reassign_conversations.
assign_ticket
ChatGPTAssign a support ticket to a team member and/or a team. Pass assignee_user_id null to unassign. A field you omit keeps its current value. Nothing is sent to the customer.
block_contact
ChatGPTBlock or unblock a WhatsApp contact.
book_appointment
ChatGPTBook an appointment for a customer at a free time (get the times from get_available_slots). Pass the customer as contact_id or phone, or — for someone who is not a contact — customer_name (+ customer_phone). All booking rules apply; a taken or invalid time is refused with the reason. If the workspace switched on the booking confirmation message, the customer is sent it on WhatsApp — confirm is then required.
cancel_appointment
ChatGPTCancel an appointment and free its time slot. The staff member is notified inside LetsBot and a synced Google Calendar event is removed. No message is sent to the customer — tell them yourself with the messaging tools if needed.
cancel_campaign
ChatGPTStop a bulk message campaign that is scheduled or sending right now. Recipients not reached yet will not get the message; those already sent are unaffected. Use it immediately when the merchant says a campaign is wrong or must stop. The campaign can be resumed later from the LetsBot panel (Bulk messages → the campaign).
cancel_scheduled_activity
ChatGPTStop messages that are still waiting to be sent (as listed by list_scheduled_activity): either ONE row (pass source + source_id; it is cancelled immediately — stopping a send needs no approval) or ALL rows matching optional filters (pass all=true; this needs the user's confirmation — call first with confirm=false to get the count, then confirm=true). Pending store notifications (Salla / Zid / WooCommerce) are deleted; queued WhatsApp messages are marked cancelled and never sent. Already-sent messages are not affected and cannot be recalled. Does NOT stop bulk campaigns (use cancel_campaign).
cancel_social_post
ChatGPTStop a Social Studio post from publishing (unschedule it). Destinations that have not published yet are cancelled; anything already published stays online — this does not remove published posts from the networks. The post is kept (status cancelled) so the team can see it; to remove it entirely use delete_social_post. Find post IDs with list_scheduled_social_posts.
complete_task
ChatGPTMark a task as done. A recurring task automatically gets its next occurrence. Nothing is sent to the customer.
create_campaign
ChatGPTCreate a new bulk message campaign to send messages to multiple contacts. Messages can be targeted by label. Campaign will be scheduled and processed by the queue.
create_company
ChatGPTCreate a CRM company (account). Only name is required. Optionally link one existing contact as its primary contact with contact_id or phone. Nothing is sent to the customer.
create_contact
ChatGPTCreate a new WhatsApp contact in the system.
create_deal
ChatGPTCreate a sales deal in the Deals pipeline. Only title is required: without stage_id the deal starts in the first open stage of the pipeline (the default pipeline when pipeline_id is omitted). Link it to a customer with contact_id or phone. Nothing is sent to the customer.
create_interactive_conversation
ChatGPTCreate an interactive bot conversation with buttons. When triggered, shows a message with clickable button options that lead to different responses.
create_label
ChatGPTCreate a new label/tag for organizing contacts.
create_product
ChatGPTAdd a product to the CRM catalogue so quotes and deals can use it. name, price and currency are required; VAT defaults to 0.
create_quick_reply
ChatGPTCreate a new quick reply/canned response. Quick replies let agents send pre-written messages instantly.
create_quote
ChatGPTCreate a DRAFT CRM quote with a Q-#### number. Link it to a deal (deal_id — its line items are copied when no items are given) and/or a contact (contact_id or phone). Nothing is sent to the customer: the operator reviews and sends it from the panel. Returns the quote and its editor url.
create_simple_conversation
ChatGPTCreate a simple bot auto-reply rule. When a customer sends a message matching the trigger keyword, the bot replies with the specified text.
create_social_post
ChatGPTCreate a Social Studio post (Facebook Page, Instagram, Threads, Telegram channel). Without publish_at the post is saved as a draft for the team to review. With publish_at (workspace local time, YYYY-MM-DD HH:mm) it is scheduled and will be published publicly at that time. Instagram needs an image or video, so a text-only Instagram post can only be a draft. Call without destination_ids to get the list of connected destinations.
create_task
ChatGPTCreate a follow-up task for the team (e.g. "Call Laila about the renewal"), optionally linked to a contact or deal, with a due time, a reminder and an assignee. The reminder notifies the assignee inside LetsBot; nothing is sent to the customer.
create_ticket
ChatGPTOpen a support ticket for a customer (contact_id or phone). The ticket is linked to their open conversation and latest message; without a subject one is taken from that message. SLA targets follow the workspace policy. If the workspace switched on the "ticket opened" customer notification, the customer is sent that WhatsApp message — confirm is then required.
create_whatsapp_template
ChatGPTCreate a new WhatsApp message template and submit it to Meta for review (Official WhatsApp / Cloud API workspaces only). A template is the only way to start a conversation or message a customer outside the 24-hour reply window; once Meta APPROVES it, send it with send_template. Inputs: name (lowercase letters, digits and underscores; Meta registers it as "nt_<name>"), language (any language Meta accepts for templates, e.g. "ar", "en", "es", "pt", "fr", "de", "tr"), category, body, an example value for every body placeholder, and optionally a header (text, or an image/video/document with a public sample URL), a footer and buttons. Categories: UTILITY = a message about something the customer already started (order update, booking reminder, account notice) — no promotion; MARKETING = promotions, offers, announcements, re-engagement — billed per delivered message at Meta's marketing rate. Meta decides the final category and may RE-CATEGORISE a UTILITY template that contains promotional wording as MARKETING (billed as marketing). AUTHENTICATION (one-time passcodes) cannot be authored here — the panel's custom-template editor does not author it either. Placeholders: positional {{1}}, {{2}} … numbered from 1 without gaps, OR named {{customer_name}} (lowercase) — never both in one template; pass examples as {"1": "Sara"} or {"customer_name": "Sara"}. Consent gate: call with confirm=false first — nothing is saved or sent and you get the exact payload Meta will receive; show it to the user and only call again with confirm=true after they approve. Meta reviews a submitted template within minutes up to 24 hours; the result (APPROVED / REJECTED with Meta's reason) appears in list_whatsapp_templates. This tool does not edit or delete existing templates (use the WhatsApp templates page in the panel) and does not send any message.
delete_bot_conversation
ChatGPTPermanently delete one bot flow (any type) by ID, together with its buttons and list sections. The bot stops answering its keywords. This cannot be undone — to pause a flow instead, use set_bot_conversation_active with active=false. Call with confirm=false first to get a preview (keywords, buttons, sections) to show the user. Run get_bot_conversations with enabled_only=false to find IDs.
delete_contact
ChatGPTPermanently delete one contact (a one-to-one chat) together with its whole conversation: every message and media file is erased shortly after, and this cannot be undone. Same as Delete on the contact in the LetsBot panel. Requires confirm: call with confirm=false first to get a preview (name, message count, labels, assigned team members), show it to the user, then call again with confirm=true. It does NOT block the number — the customer can still write again, which creates a new, empty contact; use block_contact to stop someone messaging, or archive_contact to just hide a chat. WhatsApp groups cannot be deleted with this tool. Exporting contacts is only available in the LetsBot panel.
delete_label
ChatGPTDelete a contact label by ID. The label is removed from every contact that has it and from the inbox filters; the contacts themselves are not touched. Run get_labels first to find the ID.
delete_quick_reply
ChatGPTDelete a quick reply (canned response) by ID. Run get_quick_replies first to find the ID. To only hide it, use update_quick_reply with status=false instead.
delete_social_post
ChatGPTDelete a Social Studio post from the workspace calendar. Any destination that has not published yet is cancelled first. Copies already published on Facebook/Instagram/Threads/Telegram are NOT removed from those networks. Call with confirm=false first to get a preview to show the user. To only stop publishing and keep the post, use cancel_social_post. Find post IDs with list_scheduled_social_posts.
diagnose_messaging
ChatGPTAnswer "why are my messages failing / not arriving?": checks the WhatsApp number connection (QR logged out, access removed by Meta, test number, billing block), the reasons Meta gave for the latest failed messages, failed automatic store messages, and automatic messages whose WhatsApp template is not approved — each problem with its fix. Read-only.
draft_bot_flow
ChatGPTBuild a keyword bot flow (menu, buttons, replies) from a description in the merchant's words, any language. It is created SWITCHED OFF in the bot builder so the merchant can review and edit it, then switch it on. Uses 1 AI credit. Put everything the merchant described into "description": the trigger words, the menu options and each reply.
duplicate_bot_conversation
ChatGPTMake a full copy of one bot flow (any type) by ID: the reply, its media, and all of its buttons, list sections and follow-up replies. The copy has the same keywords and the same ON/OFF state as the original, so two flows now answer the same keywords — change the copy's keyword with update_bot_conversation, or turn it off with set_bot_conversation_active. Each call creates a new copy. Run get_bot_conversations with enabled_only=false to find IDs.
find_duplicates
ChatGPTFind likely duplicate CRM records with a confidence percentage and the reason (same phone, same e-mail, similar name in the same company or city). Pass contact_id or phone to check one contact; otherwise lists the open duplicate groups of contacts (or companies with object=company). Read-only — merging happens on the panel's Duplicates screen (merge_url), where it can be undone for 30 days.
forward_message
ChatGPTForward a message from one WhatsApp chat to another.
generate_social_post_from_product
ChatGPTWrite a social media post about a product with AI (in the workspace brand voice) and save it as a Social Studio draft for review. Uses one AI content credit. Nothing is published. Call without destination_ids to get the list of connected destinations.
get_abandoned_carts
ChatGPTGet abandoned carts from the connected store (Salla, Zid, Shopify, WooCommerce or Magento) for the last N days, with a recovery summary: how many carts were abandoned and are still open, how many were recovered (bought later), how many of those were recovered after a WhatsApp reminder, the recovery rate and the recovered value. Each cart lists the customer name and phone, total, currency, items, checkout link, store, status (open or recovered) and the WhatsApp reminders already sent. Figures match the Insights page in LetsBot. WooCommerce carts are checkouts the shopper started but did not pay. Read-only: it sends nothing. To message a shopper, use send_template with the cart's customer_phone and an approved template; do not send the same cart a second reminder if reminders_sent is already above 0 unless the user asks.
get_ad_lead_settings
ChatGPTGet the ad-lead auto-labeling configuration. Shows the label and moderator (if any) that the tenant has chosen to auto-apply to incoming contacts that arrive from a Meta Click-to-WhatsApp ad.
get_agent_performance
ChatGPTPerformance report for every team member (agent/moderator) in the workspace: average first response time, average response time, conversations currently awaiting their reply and how long the oldest has waited, open conversations assigned to them, conversations closed, messages sent and customer satisfaction (CSAT). Same figures as Reports → Agent performance in the LetsBot panel. Use it to answer "who is slow?", "who has unanswered chats?" or "how did the team do this week?". Pair with reassign_conversations to move a member's waiting conversations to someone else.
get_ai_assistant_settings
ChatGPTRead how the AI assistant answers customers: whether AI replies are on, its instructions, its working hours and outside-hours message, when it hands the chat to a person (pause after hand-off / after a manual reply), what it does with voice notes, extra rules, timezone, and the Arabic dialect/tone when available.
get_assignment_rules
ChatGPTRead how new conversations are automatically given to team members (operators): the assignment mode (off / round robin / least open), which team receives them, whether only available operators count, the per-operator cap, reassigning a conversation when its operator does not reply in time, rebalancing, and the backup operator. Each setting comes with a plain-words explanation, plus the teams, operators and limits you can use with update_assignment_rules. Read-only. Use get_workload / get_agent_performance for who currently holds which chats, and reassign_conversations to move chats by hand.
get_available_slots
ChatGPTFree appointment times for a service, day by day, in the workspace booking timezone. Respects working hours, buffers, minimum notice, maximum days ahead, time off and existing bookings. Optionally for one staff member only.
get_booking_settings
ChatGPTRead the appointment booking configuration: all services (also switched-off ones) with duration, buffers, price, staff; every staff member with their weekly working hours (or that they use the workspace default hours), timezone and active state; the default working hours; branches; and the booking rules (minimum notice, how far ahead, slot interval, timezone, auto-confirm). Working hours use day keys 0-6 (0 = Sunday) with HH:MM ranges. Use upsert_booking_service to add or change a service; free times come from get_available_slots.
get_bot_conversations
ChatGPTGet all bot auto-reply conversations/rules. Shows configured triggers and their responses.
get_bot_settings
ChatGPTGet all bot and AI-related settings for the current account.
get_bot_status
ChatGPTGet the current bot status and settings. Shows whether the bot is active, AI mode, default reply settings, and match percentage.
get_campaign_status
ChatGPTGet detailed status of a specific bulk message campaign including per-contact delivery statistics.
get_campaigns
ChatGPTGet a list of bulk message campaigns. Shows campaign status, delivery stats, and scheduling info.
get_company
ChatGPTGet one CRM company: its details, owner, lifecycle, the contacts linked to it (with their role and which one is primary) and how many deals and tickets point at it.
get_contact
ChatGPTGet detailed information about a specific WhatsApp contact including labels, moderators, and last message.
get_contacts
ChatGPTGet a paginated list of WhatsApp contacts with optional search and filter.
get_conversations_awaiting_reply
ChatGPTList conversations where the customer wrote last and nobody has replied yet, newest first. This is a backlog of work outstanding, NOT a read/unread state: it is derived from who spoke last, so it clears when a reply is sent from any device and returns if the customer writes again. It is unaffected by whether anyone has opened the chat.
get_crm_report
ChatGPTCRM sales report numbers, the same as the CRM Reports dashboard. widget: revenue_goal (monthly revenue won vs goal + weighted forecast), funnel (stage-to-stage conversion of deals created in the period), win_loss (won / lost, win rate, top lost reasons), leaderboard (per team member: deals won, revenue, win rate), lead_sources (new leads by source: whatsapp, salla, zid, website, instagram, ads, manual… and conversion), velocity (average days per stage, days to win), quotes (sent → viewed → accepted), store_revenue (store orders LTV by lifecycle stage), automation_impact (automation runs, deals created by automations). Money is never summed across currencies: totals are in the report currency, other currencies are listed separately.
get_csat_settings
ChatGPTRead the customer satisfaction (CSAT / NPS / CES) survey settings: whether surveys are being sent (sending — each survey is a paid WhatsApp message), the survey type, the triggers (after an agent closes a conversation, after a ticket is resolved), the delay before sending, the per-customer frequency cap, how long an answer is accepted, the channels, follow-up / thank-you / alerts / AI sentiment switches, and the exact question the customer gets in each language (ar, en, es, pt; custom wording marked). Includes the estimated surveys per month. Change them with update_csat_settings; results come from get_csat_summary.
get_csat_summary
ChatGPTCustomer satisfaction results for a date range: surveys sent and answered, response rate, average score, % positive, % low, NPS (for nps surveys), the change against the previous period, and the same figures per agent, per team and per channel.
get_deal
ChatGPTGet one sales deal: amount, stage, status, owner, contact, expected close date, and its latest activity (stage changes, notes, amount changes).
get_deal_pipelines
ChatGPTRead the sales pipeline configuration: every pipeline (name, currency, default or not) with its stages in board order (id, name, colour, win probability %, kind open/won/lost, how many deals sit in it), the lost reasons, and the workspace default currency. Use it before upsert_pipeline or upsert_pipeline_stage to get the ids. For deal amounts per stage use get_pipeline_summary; for the deals themselves list_deals.
get_goals
ChatGPTSales goals (revenue won, deals won or new leads, per team member / team / the whole workspace) with progress in the current month or quarter: target, actual, ratio, expected-by-today pace (ahead / behind / done) and days left.
get_group_messages
ChatGPTGet messages from a WhatsApp group conversation, newest first, with the sender of each message. Read-only: reading a group NEVER marks its messages as read and sends no read receipts. Use get_groups to list groups and their ids.
get_groups
ChatGPTGet a paginated list of WhatsApp group conversations. Read-only: listing groups never marks anything as read. Counts report what has not been opened in the LetsBot inbox, which is not the same as what the merchant has seen on their own phone. Use get_group_messages to read a group's history.
get_label_contacts
ChatGPTGet all contacts that are assigned to a specific label.
get_labels
ChatGPTGet all labels/tags available in the account. Labels are used to categorize and organize contacts.
get_lead_score
ChatGPTGet a CRM contact's lead score (0-100, hot ≥ 70, warm ≥ 40) with the reason for every point (messages, reply speed, quotes, store orders, deals, lifecycle, inactivity), the last 30 days trend and store order metrics (orders count, lifetime value, average order, last order). Pass contact_id or phone.
get_media_item
ChatGPTGet one media library item: direct url, kind, size, dimensions, title, caption, alt text, tags, folder, whether WhatsApp accepts it as-is, and where it is used (campaigns, social posts, bot replies…).
get_message_status
ChatGPTCheck what WhatsApp actually did with messages you already sent — delivered, read, still pending, or FAILED with Meta's own reason. A send tool returning status "sent" only means Meta accepted the message; Meta can still refuse to deliver it seconds later, and this tool is the only way to learn that. Call it a minute or two after sending (pass the message_id values the send tools returned), or pass a phone number to review every recent outbound message to one contact.
get_messages
ChatGPTGet messages from a WhatsApp conversation. Returns the most recent messages paginated.
get_moderators
ChatGPTGet all moderators/agents available in the account. Moderators are team members who can handle conversations.
get_my_chats
ChatGPTGet contacts/chats assigned to the current user (moderator).
get_notification_template
ChatGPTRead ONE automatic store notification (order status, verification code/OTP, welcome, review request …) in full: its message text in every language, its image/video/file, whether it is on, and its WhatsApp (Meta) approval. Pass the id from list_store_automations (kind notification_template), or the store module + event slug (e.g. module "salla", slug "otp" or "completed").
get_order_status
ChatGPTGet the status and details of an e-commerce order. Supports Salla and Zid platforms, and any other connected store that can look orders up (odoo, shopify, woocommerce). Orders are synced from the connected store.
get_pipeline_summary
ChatGPTSummarise a sales pipeline: for every stage the number of deals and their total amount, plus open pipeline value, weighted forecast (each open deal × its stage probability), won this month and the 90-day win rate. Amounts are in the pipeline currency; deals in another currency are counted separately, never added. Optionally only one owner's deals.
get_quick_replies
ChatGPTGet all quick replies/canned responses available. Quick replies are pre-written message templates that can be sent quickly.
get_quote
ChatGPTRead one quote with its line items, totals, status (draft, sent, viewed, accepted, declined, expired), buyer and the customer link.
get_report
ChatGPTRead one tab of the LetsBot Reports page for a period: KPI cards with the change vs the previous period, the main chart (labels + series), the table rows (max 100) and footnotes. Tabs: conversations (opened/closed/open), responses (reply speed), resolutions, messages (inbound/outbound, delivery), contacts (new contacts by channel, ads vs organic), assignments, lifecycle, calls (WhatsApp calls), agent_performance, users (team availability/workload) and broadcasts (campaign delivery and replies). Call with no tab to get the list of tabs available in this workspace. Same numbers the merchant sees in the panel for the same period. For a per-agent table with live "awaiting reply" counts use get_agent_performance instead. Read-only.
get_routing_settings
ChatGPTRead the conversation-routing configuration: every department (team) with its members, description, business hours, timezone, channels, default priority, skills, assignment mode and whether it has a paid out-of-hours reply; the routing rules in order (first match wins; conditions, action, enabled, how often matched); and whether Routing Pro is deciding new conversations plus the default open-conversation capacity per agent. Use upsert_department to create or change a department. Live queues and agent load come from get_workload / list_departments. Rules are edited in LetsBot → Routing → Rules.
get_store_setup_checklist
ChatGPTThe step-by-step set-up of a store on LetsBot (Salla, Zid, Shopify, …): 1 connect the WhatsApp number, 2 store notifications (order status, verification code, welcome, review), 3 abandoned-cart reminders, 4 cash-on-delivery confirmation, 5 AI replies. Use it when the merchant asks to set up his store/account or "what is left"; then walk him through the first unfinished step.
get_ticket
ChatGPTGet one support ticket: subject, description, status, priority, assignee, customer, SLA clocks (first response / resolution, breached or not) and its latest timeline (status changes, assignments, internal notes).
get_ticket_settings
ChatGPTRead the helpdesk configuration: ticket types (id, name, colour, active, already used), SLA policies (first-response and resolution targets in minutes per priority low/normal/high/urgent, whether they count business hours only, escalation, which one is the default), the support hours used by the SLA timers, and whether the customer gets a (paid) message when a ticket is opened or resolved. Use upsert_ticket_type to add or rename a type. SLA policies and notifications are edited in LetsBot → Tickets → Settings.
get_timeline
ChatGPTGet the CRM timeline of a contact, company or deal, newest first: notes, logged calls and meetings, daily chat summaries (message counts in/out per channel per day, never every message), deal stage moves, tasks, tickets, appointments and lifecycle changes. A company timeline also includes its linked contacts and deals. Page with next_cursor.
get_workload
ChatGPTThe live team workload: for each live-chat agent their status, whether they are on shift or on time off, open conversations against their capacity and their departments; plus how many conversations wait in each department's queue and how many wait with no department.
link_company_contact
ChatGPTLink a contact to a CRM company (optionally as its primary contact, with a role such as "Buyer"), or unlink it with unlink=true. Name the contact with contact_id or phone.
list_appointments
ChatGPTList appointments: upcoming (default), today, past, all, or a date range — optionally by status, staff member, service or customer. Times are in the workspace booking timezone.
list_automations
ChatGPTList the CRM automations (trigger → conditions → actions): id, name, status (draft, active, paused), trigger type, number of steps, runs, failures, last run, and whether it sends paid WhatsApp template messages. Filter by status.
list_companies
ChatGPTList CRM companies (accounts), most recently updated first. Filter by a search term (name, domain, email or phone), lifecycle (lead, prospect, customer, partner, churned) or owner (a team member user id).
list_deals
ChatGPTList sales deals (Deals pipeline), newest activity first. Filter by pipeline, stage, status (open, won, lost), owner (a team member user id), contact, or a search term in the title. Also returns the pipelines with their stages, so the ids for create_deal / update_deal are at hand.
list_departments
ChatGPTList the active departments (teams) conversations can be routed to: name, description, members count, whether they are open right now (business hours / holidays), when they open next, and how many conversations wait in their queue. Use the id with transfer_to_department.
list_low_scores
ChatGPTThe most recent low satisfaction scores in a date range (up to 20): rating, the customer's comment, agent, channel, linked ticket and the contact — so the team can follow up with unhappy customers.
list_products
ChatGPTList the CRM product catalogue (the items quotes and deal line items use): name, SKU, price, currency, VAT and whether it is active. Filter by a search term (name or SKU).
list_quotes
ChatGPTList CRM quotes (Q-#### numbers), newest first, with status (draft, sent, viewed, accepted, declined, expired), total, validity and how many times the customer opened the link. Filter by status, deal_id or contact (contact_id or phone).
list_scheduled_activity
ChatGPTList messages that are still waiting to go out to customers: pending store notifications from Salla, Zid and WooCommerce (order updates, abandoned-cart reminders, …) and the outgoing WhatsApp send queue (including failed sends that would be re-sent when the number reconnects). Use it when the merchant asks "what is about to be sent?" or wants to stop pending messages. Returns totals per source and rows with source + source_id — pass those to cancel_scheduled_activity. Does NOT list bulk campaigns (use get_campaigns / cancel_campaign) or scheduled social posts (list_scheduled_social_posts). Read-only.
list_scheduled_social_posts
ChatGPTList Social Studio posts scheduled (or waiting for approval) between two dates, in the workspace timezone. Defaults to the next 14 days; at most 92 days per call.
list_services
ChatGPTList the bookable appointment services (name, duration, price, which staff deliver it) and the active booking staff. Use the ids with get_available_slots and book_appointment.
list_store_automations
ChatGPTList every automatic WhatsApp message this workspace sends to its store customers, and whether each one is ON or OFF: order/store event notifications (kind notification_template — e.g. order created, shipped, delivered, per store platform), abandoned-cart reminders (kind cart_reminder, plus older per-store ones as legacy_cart_reminder, read-only) and automation reminders (kind behavioral_reminder — e.g. product viewed, checkout started, ask for a rating after delivery). Each row has id, kind, platform, event, delay (for reminders), template info (type, languages, Meta category and approval status on an official number), active, can_toggle, last_sent_at and warnings explaining why an active message might not actually send. Also returns which stores are connected. Use it before set_store_automation_active (which needs kind + id) and to answer "which automatic messages are on?". It does NOT change anything, show message text, edit templates or send test messages.
list_tasks
ChatGPTList the team's follow-up tasks. Filter by when (overdue, today, upcoming, no_date), by assignee (pass a team member's user id for "my tasks" — the connector has no signed-in user; ids come from get_moderators; "none" for unassigned), by contact, status (open by default) or priority. Overdue and due-today flags are computed in the workspace timezone.
list_tickets
ChatGPTList support tickets, urgent and soonest-due first. Filter by status, priority, SLA breached / overdue, assignee (a team member's user id, or "none" for unassigned — the connector has no signed-in user, so pass your own id for "my tickets"), contact or a search term (subject, #number, customer name or phone). Each ticket carries its SLA state.
list_whatsapp_templates
ChatGPTList the WhatsApp message templates (Meta-approved message formats) of this workspace: name, exact language code, category (MARKETING / UTILITY / AUTHENTICATION), Meta review status and the rejection reason when Meta gave one, body text, header type, and the placeholders each template expects (numbered {{1}} or named {{customer_name}}). Each row says whether send_template can send it (only APPROVED, non-carousel templates). Use it before send_template to pick a template and pass its exact name, language and parameters, or to answer "which templates were rejected and why?". Filters: status, category, language, search (name, template id or language); 50 per page. Read-only: it does not create, edit, submit or sync templates with Meta — that is done in the LetsBot panel. Templates exist only on the official WhatsApp Cloud API connection.
lose_deal
ChatGPTMark a sales deal as lost. A reason is required: pass lost_reason_id, or reason with the reason's name (e.g. "Price too high"). Call without a reason to get the workspace's list of lost reasons. Nothing is sent to the customer.
mark_as_read
ChatGPTMark a conversation as opened in the LetsBot inbox, and send a read receipt to the customer on channels that support one. This affects inbox read state ONLY. It does NOT clear the conversation from get_conversations_awaiting_reply — only sending a reply does that — so do not call this expecting the awaiting-reply backlog to go down.
pin_contact
ChatGPTPin or unpin a contact chat so it stays at the top of the list.
reassign_conversations
ChatGPTMove conversations from one team member to another in one step — e.g. "move Ahmed's waiting chats to Mona". By default only the conversations awaiting a reply (the customer wrote last) move; use scope=all for every open conversation the member holds, or waiting_longer_than_minutes for only the late ones. The giver is removed, the receiver is assigned and notified, and the change is recorded in the conversation history. Get member ids from get_moderators or get_agent_performance.
reply_to_message
ChatGPTReply to a specific message in a conversation on any connected platform (WhatsApp, website chat, Messenger, Instagram, Telegram, …).
reschedule_appointment
ChatGPTMove an active appointment to a new free time (and optionally another staff member). All booking rules apply and the reminders are re-armed for the new time. If the workspace switched on the reschedule notice, the customer is sent it on WhatsApp — confirm is then required.
resend_campaign
ChatGPTSend a bulk campaign again to the recipients whose message is stuck at "sent" — WhatsApp accepted it but it was never confirmed delivered (phone offline, number inactive). Delivered and read recipients are NOT messaged again. Recipients who never got it yet are included. Real WhatsApp messages that Meta charges for, and someone who did receive it without a delivery receipt may get it twice. Requires confirm: call with confirm=false first for a preview (how many people, template, estimated Meta cost), show it to the user, then confirm=true. Needs the Send Bulk add-on. To continue a stopped campaign use resume_campaign; to stop one use cancel_campaign.
resume_campaign
ChatGPTResume a bulk campaign that was stopped (cancel_campaign / Cancel in the panel), finished with recipients left unsent, or stopped because its template header file was missing. Sends the campaign to every recipient who has not received it yet — real WhatsApp messages that Meta charges for. Requires confirm: call with confirm=false first to get a preview (how many people will be messaged, template, estimated Meta cost), show it to the user, then call again with confirm=true. Needs the Send Bulk add-on. Does NOT re-send to people already sent — use resend_campaign for that. Use get_campaign_status to see progress afterwards, cancel_campaign to stop it again.
search_media
ChatGPTSearch the workspace media library (images, videos, audio, documents) by text in the title / tags / alt text, kind, tag, folder, where it came from, or upload date. Each item has a direct url you can pass to send_image / send_video / send_file, and whatsapp_ok tells whether WhatsApp accepts it as-is.
search_messages
ChatGPTSearch messages across all conversations (individual chats and groups), or within one specific contact chat or group.
search_products
ChatGPTSearch for products in the connected e-commerce store. Searches by name in Salla and Zid product catalogs, and in every other connected store (odoo, shopify, woocommerce) by name, SKU or barcode.
send_audio
ChatGPTSend an audio file or voice note to a WhatsApp number.
send_buttons
ChatGPTSend an interactive message with buttons to a WhatsApp number. Maximum 3 buttons.
send_carousel
ChatGPTSend a carousel of cards (title, subtitle, image, up to 3 buttons each; max 10 cards) to a Messenger or Instagram contact. Provide the recipient PSID/IGSID and platform.
send_contact_card
ChatGPTSend a contact card (vCard) to a WhatsApp number.
send_file
ChatGPTSend a document/file to a WhatsApp number. file_url must be a DIRECT url to the file itself. If you generated the file yourself, or it is not already at a direct public url, call upload_file first (it takes the bytes as base64 and returns a url plus the filename to pass here). A Google Drive / Dropbox / OneDrive share link is not a direct url — it points at a download page, and the file arrives as an unopenable "BIN" attachment.
send_image
ChatGPTSend an image to a WhatsApp number with an optional caption.
send_list
ChatGPTSend an interactive list/menu message to a WhatsApp number.
send_location
ChatGPTSend a location to a WhatsApp number.
send_reaction
ChatGPTAdd an emoji reaction to a message in a WhatsApp conversation.
send_template
ChatGPTSend a WhatsApp-approved message template to a number. Templates are required for sending messages outside the 24-hour window.
send_text_message
ChatGPTSend a text message to a contact on any connected platform: a WhatsApp number (international format without +, e.g. 201234567890), or the phone / chat_id of a website chat, Messenger, Instagram, Telegram, X or SMS contact exactly as get_conversations_awaiting_reply or get_contacts returns it. The message goes out on the platform the contact wrote from.
send_video
ChatGPTSend a video to a WhatsApp number with an optional caption.
set_bot_conversation_active
ChatGPTTurn one bot flow (auto-reply conversation of any type: simple, buttons, template or list) ON or OFF by ID. An OFF flow stays saved but the bot stops answering its keywords. Asking for the state it is already in changes nothing. A buttons/template flow with no buttons, or a list flow with no sections, cannot be turned ON until it is completed in the panel. This does NOT switch the whole bot (use toggle_bot) and does not edit the reply (use update_bot_conversation). Run get_bot_conversations with enabled_only=false to find IDs.
set_conversation_status
ChatGPTClose a conversation when it is resolved, or reopen it. A closed conversation reopens by itself when the customer writes again. Some workspaces require a closing category and/or a closing note: call with status=closed and no category to get the list of categories and the requirements. Returns the conversation's status afterwards. Closing sends nothing to the customer.
set_store_automation_active
ChatGPTTurn ONE automatic store message on or off — an order/store notification, an abandoned-cart reminder or an automation reminder — exactly like its toggle in the LetsBot panel. Get kind + id from list_store_automations first. Turning it ON makes LetsBot message the merchant's customers automatically every time the event happens (Meta bills each message on an official WhatsApp number), so only do it when the merchant explicitly asks, and it needs confirm=true after showing the preview. Turning it OFF takes effect immediately and needs no confirmation. It does NOT edit the message text, submit templates to Meta, send a test, or create/delete automations (those are done in the LetsBot panel). Older per-store reminders (legacy_cart_reminder) cannot be switched here.
toggle_bot
ChatGPTToggle the bot on or off for a specific contact. When bot is disabled for a contact, automated replies will not be sent.
transfer_to_department
ChatGPTTransfer a customer conversation to a department: its current agents are taken off it, and an agent of the department gets it now when one is available, on shift and under capacity — otherwise it waits in the department's queue. Nothing is sent to the customer. Get department ids from list_departments.
update_ad_lead_settings
ChatGPTConfigure which label and moderator are auto-applied to contacts that arrive from a Meta Click-to-WhatsApp ad. Pass 0 for either field to clear that setting. Pass nothing to leave both as they were. Run get_labels and get_moderators first to find valid IDs.
update_assignment_rules
ChatGPTChange how new conversations are automatically given to team members. Pass ONLY the settings to change; everything else stays as it is. Call get_assignment_rules first to see the current values, the teams and the operators you can use. Examples: turn it on with mode="round_robin"; cap each operator at 10 chats with max_open=10; move a chat nobody answered within 15 minutes with reassign_after_minutes=15; set max_open/reassign_after_minutes/team_id/fallback_user_id to null to clear them. A backup operator (fallback_user_id) is required when after_last_hop or when_full is "fallback". Returns the settings before and after. Sends nothing to customers and does not move existing chats by itself (use reassign_conversations for that).
update_bot_conversation
ChatGPTUpdate an existing bot auto-reply rule by ID. Only the provided fields change; everything else stays as it was. Run get_bot_conversations first to find the conversation ID.
update_bot_settings
ChatGPTUpdate bot and AI settings. Only the specified settings will be updated, others remain unchanged.
update_contact
ChatGPTUpdate a contact's information (name, email, etc.).
update_csat_settings
ChatGPTChange the customer satisfaction survey settings — pass only what changes. Switch surveys on/off (sending), choose the type (csat 1-5 stars, nps 0-10, ces effort), when they are sent (triggers, delay_minutes), how often one customer may be asked (cap_days), on which channels, and the question text per language. Switching sending ON costs money (every survey is a WhatsApp message): that one change needs confirm=true after the user saw the monthly estimate in the preview; every other change saves directly (confirm=false is fine). Read the current values with get_csat_settings.
update_deal
ChatGPTUpdate a sales deal: title, amount, currency, stage (move it along the pipeline), owner or expected close date. Moving to a "won" stage wins the deal; to mark it lost use lose_deal (a reason is required). Only the fields you pass change.
update_label
ChatGPTRename or recolour an existing contact label by ID. Only the fields you pass change. Run get_labels first to find the ID. Contacts keep the label; they just show the new name/colour.
update_quick_reply
ChatGPTUpdate an existing quick reply/canned response by ID. Only the provided fields change; everything else stays as it was. Run get_quick_replies first to find the quick reply ID.
update_social_post
ChatGPTEdit a Social Studio post that has not been published yet: its text, its media (Social Studio media-library asset IDs), and/or its publish time. Only the fields you pass change; destinations and per-network captions stay as they are. A draft stays a draft (publish_at only pre-fills its time); a scheduled post keeps its schedule and is re-checked against each network's rules. Published or cancelled posts cannot be edited — use create_social_post for a new one. To stop a post from publishing use cancel_social_post; to remove it use delete_social_post. Find post IDs with list_scheduled_social_posts.
update_task
ChatGPTUpdate a task: title, description, due time, reminder, priority, assignee or status (todo, in_progress, done). Only the fields you pass change; pass assignee_user_id null to unassign.
update_ticket_status
ChatGPTChange a support ticket's status: open, pending, on_hold (pauses the resolution clock), resolved or closed. Setting a resolved/closed ticket back to open reopens it. If the workspace switched on the "ticket resolved" customer notification, resolving sends the customer that WhatsApp message — confirm is then required.
upload_file
ChatGPTUpload a file you already have the bytes of (a PDF you generated, an image, a document) into LetsBot storage, and get back a direct https url. Use this BEFORE send_file / send_image / send_video / send_audio whenever the file does not already live at a public direct url. Do NOT pass a Google Drive, Dropbox or OneDrive share link to the send tools: those point at a download page rather than at the file, so WhatsApp shows an unopenable "BIN" attachment. Each call stores a new copy at a new url — if you already have a url from this tool, reuse it instead of uploading again.
upsert_booking_service
ChatGPTCreate a bookable appointment service (omit service_id; name and duration_minutes required) or update one (pass service_id plus only the fields to change). Set is_active=false to stop new bookings for a service without losing its history. staff_ids replaces the list of team members who deliver it (they become booking staff). Does not delete services and does not change working hours (LetsBot → Booking → Settings). Get ids from get_booking_settings.
upsert_department
ChatGPTCreate a department (team) that conversations are routed to (omit team_id; name required), or update one (pass team_id plus only what changes): name, members (member_user_ids REPLACES the member list), description, the name customers see, business hours + timezone, channels it handles, default priority, skills, and how it picks an agent (round_robin, least_open, skills). Removing members needs confirm=true after the user saw who is removed; anything else saves directly (confirm=false is fine). Does not delete departments, edit routing rules, or switch on the paid out-of-hours reply (LetsBot → Routing). Get ids from get_routing_settings; user ids from get_moderators.
upsert_pipeline
ChatGPTCreate a new sales pipeline (omit pipeline_id) — it starts with one open stage plus Won and Lost; add more stages with upsert_pipeline_stage — or update an existing one (pass pipeline_id): rename it, change its currency, or make it the default pipeline. Existing deals keep their own amounts and currency. Does not delete pipelines (that is done in LetsBot → Deals → Settings). Get ids from get_deal_pipelines.
upsert_pipeline_stage
ChatGPTAdd a stage to a sales pipeline (pass pipeline_id + name; omit stage_id) or update a stage (pass stage_id plus only the fields to change: name, color, probability, kind). A new open stage is placed before the Won / Lost columns. The kind of a stage that holds deals cannot change, and every pipeline keeps at least one open stage. Does not delete or reorder stages (done in LetsBot → Deals → Settings). Get ids from get_deal_pipelines.
upsert_ticket_type
ChatGPTCreate a ticket type (omit type_id; e.g. "Refund request", "Delivery issue") or update one (pass type_id plus the fields to change). is_active=false hides a type from new tickets while existing tickets keep it. Does not delete types (LetsBot → Tickets → Settings). Get ids from get_ticket_settings.
win_deal
ChatGPTMark a sales deal as won. It moves to the pipeline's "won" stage and counts in the won revenue. Nothing is sent to the customer.
ai_analyze_contact
Claudeai_dashboard_summary
Claudeai_employee_performance
Claudeai_improve_message
Claudeai_sentiment_analysis
Claudeai_suggest_reply
Claudeai_summarize_conversation
Claudeai_team_report
Claudeai_translate_message
Claudearchive_contact
Claudeassign_label
Claudeassign_moderator
Claudeblock_contact
Claudecreate_campaign
Claudecreate_contact
Claudecreate_interactive_conversation
Claudecreate_label
Claudecreate_quick_reply
Claudecreate_simple_conversation
Claudeforward_message
Claudeget_ad_lead_settings
Claudeget_bot_conversations
Claudeget_bot_settings
Claudeget_bot_status
Claudeget_campaign_status
Claudeget_campaigns
Claudeget_contact
Claudeget_contacts
Claudeget_label_contacts
Claudeget_labels
Claudeget_messages
Claudeget_moderators
Claudeget_my_chats
Claudeget_order_status
Claudeget_quick_replies
Claudeget_unread_contacts
Claudemark_as_read
Claudepin_contact
Claudereply_to_message
Claudesearch_messages
Claudesearch_products
Claudesend_audio
Claudesend_buttons
Claudesend_contact_card
Claudesend_file
Claudesend_image
Claudesend_list
Claudesend_location
Claudesend_reaction
Claudesend_template
Claudesend_text_message
Claudesend_video
Claudetoggle_bot
Claudeupdate_ad_lead_settings
Claudeupdate_bot_conversation
Claudeupdate_bot_settings
Claudeupdate_contact
Claudeupdate_quick_reply
Claude