- Brand
- Foodics
- Category
- Operations
- Primary Subcategory
- ERP & Operations Resource Tools
Integration details
Description
Connect your Foodics business to explore sales, orders, menu, inventory, customers and restaurant performance in English or Arabic. All tools are read-only. Connection requires a Foodics business owner or a user authorized to manage apps. Data access follows the connected business account.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- ERP & Operations Resource Tools
- Secondary Subcategories
- None listed
- Brand
- Foodics
- Access
- Account required
- First tracked
- 2026-11-11
- Tool count
- 74
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Not discoverable in ChatGPT yet
ChatGPT now suggests Plugins on its own when they match a user's request, but not every Plugin is being surfaced yet.We haven’t seen Foodics suggested yet. Sign up and we’ll track it, and your Discoverability Score will appear here once ChatGPT starts surfacing it.
What discovery looks like

Get alerts for Foodics
Get updates when Foodics’s Discoverability Score or category rank changes.
Competing in ChatGPT ERP & Operations Resource Tools
View Category74 tools agents can invoke
Daily totals per business day (open/close times, net sales, order count) over a date range. Use for day-by-day operational summaries.
get_business_days_report
Row-level log of manual cost adjustments over a date range. Use to audit who changed item costs and by how much.
get_cost_adjustment_history_report
Inventory cost breakdown over a date range. `level` is required — pass 'item' for per-ingredient costs or 'category' for category-level rollup. Use when you need COGS or cost-variance analysis.
get_cost_analysis_report
Lifetime summary for one specific customer (total spend, visit count, favourite items). Requires customer_id. No date range — covers lifetime history. Use get_sales_by_customer for date-bounded multi-customer analysis instead.
get_customer_insights_report
Row-level cash drawer events (pay-in, pay-out, cash drop, open drawer, sales, returns) over a date range. Use to audit drawer activity or investigate discrepancies.
get_drawer_operations_report
Get a single customer by UUID. Rows carry a numeric `gender` code — read meta.enums for the labels.
get_customer
Get order history for a specific customer. Order rows carry numeric `status`, `type`, `source`, `delivery_status` and `discount_type` codes — read meta.enums for the labels (note `order_status` decodes the order's own status, `product_status` decodes each line item's; they are different tables). Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_customer_orders
Get a customer's CURRENT loyalty points balance by UUID (the loyalty_balance on their record). For the earn/redeem history behind it, use get_loyalty_transactions instead.
get_customer_points
Get current live stock levels for ONE branch (raw per-item quantities on hand). Optionally filter to specific item UUIDs. For an aggregated point-in-time levels report across multiple branches with grouping, use get_inventory_levels_report() instead. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_inventory_levels
Get a single loyalty reward by UUID.
get_loyalty_reward
List available loyalty rewards. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_loyalty_rewards
List loyalty transactions (the earn/redeem history). Optionally filter by customer or order UUID. For a customer's CURRENT balance, use get_customer_points instead. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_loyalty_transactions
Get ONE modifier option by UUID with every relation embedded, including `allergens` and `nutrition_info` — the only tool that returns those (search_modifier_options cannot include them). For other detail prefer search_modifier_options(ids=[...], include=[...]), which takes up to 50 at once. Here every relation is returned, so a missing one means none is set. Rows carry a numeric `costing_method` code — read meta.enums for the labels.
get_modifier_option
Get a single order by UUID. Use include for full detail, e.g. include=["products.product","payments.payment_method","customer","branch"]. Order rows carry numeric `status`, `type`, `source`, `delivery_status` and `discount_type` codes — read meta.enums for the labels (note `order_status` decodes the order's own status, `product_status` decodes each line item's; they are different tables).
get_order
Get ONE product by UUID with every relation embedded, including `allergens` and `nutrition_info` — the only tool that returns those (search_products cannot include them). For other detail prefer search_products(ids=[...], include=[...]), which takes up to 50 at once. Here every relation is returned, so a missing one means none is set. Rows carry numeric `pricing_method`, `selling_method` and `costing_method` codes — read meta.enums for the labels.
get_product
Gift card activity over a date range (issued, redeemed, balances). Use for gift-card liability or redemption reporting.
get_gift_cards_report
Opening stock, closing stock, consumption, and variance per item over a date range. Use for stock reconciliation or shrinkage analysis. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_inventory_control_report
Row-level log of every inventory movement (adjustments, transfers, receipts) over a date range. Use when you need the full audit trail of stock changes. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_inventory_history_report
Point-in-time stock quantities across branches — no date range required. Use for multi-branch inventory snapshots. For a single branch's live quantities use get_inventory_levels instead. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_inventory_levels_report
Menu engineering matrix over a date range — classifies each item as Star / Plow-horse / Puzzle / Dog based on popularity vs profitability. Use for menu optimisation decisions.
get_menu_engineering_report
Live operational snapshot — active orders, free tables, online cashiers, last sync time per branch. No date range, real-time data only.
get_operations_report
High-level KPI over a date range (net sales, order count, avg order price, top products/branches, etc.). Returns ONE KPI per call — the `metric` argument is required; call once per KPI you need. Use as the first stop for 'how are we doing?' questions. Whole-business only — this report accepts NO filters at all (no branches/branch_id); for per-branch figures use a sales_by_* report. There is also no gross_sales metric of any name here (see the `metric` param) — for gross revenue use a sales_by_* report's gross_sales column.
get_overview_report
Payment totals by payment method over a date range. Use when you need to know how much was paid by cash, card, wallet, etc.
get_payments_report
Row-level list of purchase orders over a date range. Use to audit procurement activity or find orders from a specific supplier.
get_purchase_orders_report
Aggregated purchasing summary over a date range, grouped by branch or supplier. Use for spend analysis per supplier or per branch.
get_purchasing_report
Sales totals broken down by branch. Use when comparing branch performance (revenue, orders, discounts, tax). group_by slices each branch row further. IMPORTANT: the branch rows (no group_by, or a time, order-type or staff group_by) INCLUDE paid-modifier revenue and order charges in net_sales. Item group_bys split that money differently: group_by='product' or 'category' rows show the base item price only (no modifier revenue, no charges), group_by='modifier' rows carry the modifier revenue, group_by='combo' rows the combos. This report has no exclude_modifiers parameter, unlike sales_by_product/sales_by_category/sales_by_combo: passing one here is DISCARDED by the API before the query runs (verified live: 200 with unchanged numbers), so do NOT read that 200 as the flag having worked.
get_sales_by_branch_report
Sales totals broken down by cashier (the POS user who rang up the order). Use to evaluate cashier productivity or spot outliers.
get_sales_by_cashier_report
Sales totals broken down by menu category. Use to see which menu sections drive the most revenue. net_sales INCLUDES paid-modifier revenue by default but never order charges: the default total plus sales_by_branch's charges equals sales_by_branch's total. exclude_modifiers=true gives the base item price only, which matches sales_by_branch with group_by='category'.
get_sales_by_category_report
Sales totals broken down by charge type (delivery fee, service charge, etc.). Use to analyse extra-fee revenue.
get_sales_by_charge_report
Sales totals broken down by combo meal. Use to rank combo performance. net_sales INCLUDES paid-modifier revenue by default, which matches sales_by_branch with group_by='combo'; exclude_modifiers=true leaves the modifier revenue out.
get_sales_by_combo_report
Sales totals broken down by order creator (staff member who opened the order, which may differ from the cashier). Use to track order-creation activity per employee.
get_sales_by_creator_report
Sales totals broken down by customer — each row IS one customer (do NOT pass group_by='customer'). Use for top-spender ranking or loyalty-driven revenue breakdown. group_by slices each customer row further (e.g. by branch or product). Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
get_sales_by_customer_report
Sales totals broken down by delivery zone. Use to compare delivery-area revenue and order volumes.
get_sales_by_delivery_zone_report
Sales totals broken down by discount. Use to measure how much each discount drives revenue and how often it's applied.
get_sales_by_discount_report
Sales totals broken down by delivery driver. Use to compare driver performance (orders delivered, revenue carried).
get_sales_by_driver_report
Sales totals broken down by modifier option (e.g. 'Extra cheese'). Use to see which add-ons are most popular and their revenue impact.
get_sales_by_modifier_option_report
Sales totals broken down by order source. Rows carry a numeric `order_source` code — read meta.enums for the labels. Use to compare channel performance.
get_sales_by_order_source_report
Sales totals broken down by order type. Rows carry a numeric `order_type` code — read meta.enums for the labels. Use to compare fulfilment-type revenue.
get_sales_by_order_type_report
Sales totals broken down by product. Use for best/worst seller ranking, product revenue contribution. net_sales INCLUDES paid-modifier revenue by default but never order charges: the default total plus sales_by_branch's charges equals sales_by_branch's total. exclude_modifiers=true gives the base product price only, which matches sales_by_branch with group_by='product'.
get_sales_by_product_report
Sales totals broken down by promotion. Use to measure promotion effectiveness and uplift.
get_sales_by_promotion_report
Sales totals broken down by dining section (floor area / seating zone). Use to compare section utilisation and revenue.
get_sales_by_section_report
Sales totals broken down by table. Use to compare table-level revenue and average covers.
get_sales_by_table_report
Sales totals broken down by timed event (scheduled menu/pricing windows such as happy hour or breakfast). Use to measure event-driven revenue.
get_sales_by_timed_event_report
Search allergens. Filterable by name and predefined flag. Rows are lean: a related object (category, branches, options, …) is present only when named in `include` — a missing key means not requested, not empty. To look up known records by UUID, pass ids=[...] (up to 50, live or deleted) with the include you need, in one call. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
search_allergens
Search branches. `name` is free-text (substring match); `reference` is exact. Also filterable by online-order capability. Rows are lean: a related object (category, branches, options, …) is present only when named in `include` — a missing key means not requested, not empty. To look up known records by UUID, pass ids=[...] (up to 50, live or deleted) with the include you need, in one call. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
search_branches
Search menu categories. Filterable by name and reference. Rows are lean: a related object (category, branches, options, …) is present only when named in `include` — a missing key means not requested, not empty. To look up known records by UUID, pass ids=[...] (up to 50, live or deleted) with the include you need, in one call. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
search_categories
Search combo meals. Filterable by name, category, active status. Set full_detail=true for the whole tree in the same call: sizes, items, their options and products, with the combo prices. Rows are lean: a related object (category, branches, options, …) is present only when named in `include` — a missing key means not requested, not empty. To look up known records by UUID, pass ids=[...] (up to 50, live or deleted) with the include you need, in one call. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
search_combos
Search cost adjustment transactions (corrections/overrides to inventory item costs). Filterable by branch, status, reference, business date range. Rows carry a numeric `status` code — read meta.enums for the labels. Rows are lean: a related object (category, branches, options, …) is present only when named in `include` — a missing key means not requested, not empty. To look up known records by UUID, pass ids=[...] (up to 50, live or deleted) with the include you need, in one call. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
search_cost_adjustments
Search coupons. Filterable by name, code, discount, active status. Rows carry a numeric `coupon_type` code — read meta.enums for the labels. Rows are lean: a related object (category, branches, options, …) is present only when named in `include` — a missing key means not requested, not empty. To look up known records by UUID, pass ids=[...] (up to 50, live or deleted) with the include you need, in one call. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — do not summarize, count, chart, or answer from it yet. Call this tool again passing meta.next_starting_page as starting_page to fetch the next batch, and repeat until meta.has_more is false before presenting any answer. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
search_coupons
Search customers. Filterable by name, email, phone, blacklist status, loyalty membership. Use it to find specific customers, e.g. 'customers named Ahmed' or 'the customer with this phone number', or to rank them with sort_by (e.g. the newest customer, or most orders ever). For a count, pass count_only=true (e.g. 'how many loyalty members do we have': is_loyalty_enabled=true, count_only=true). NOT for totals: top spenders or revenue per customer → get_sales_by_customer_report (e.g. 'top 20 customers this month'); one customer's lifetime spend and visits → get_customer_insights_report. Rows carry a numeric `gender` code — read meta.enums for the labels. Rows are lean: a related object (category, branches, options, …) is present only when named in `include` — a missing key means not requested, not empty. To look up known records by UUID, pass ids=[...] (up to 50, live or deleted) with the include you need, in one call. Returns up to 200 items per call. If meta.has_more is true, THE RESULT IS INCOMPLETE — never present it as complete. Fetch the next batch (pass meta.next_starting_page as starting_page) only when you need the rows themselves; for totals, use the report named above instead of paging to the end. If meta.rate_limited_retry_after is set, the batch stopped at the rate limit: wait that long before fetching the next one.
search_customers
Foodics ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Foodics's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Foodics alternatives on ChatGPT?
As of 2026-11-11, Foodics competes with (주)한산테크 MES, 101, 1barn, 1XA ERP, ADI Admin, AeroPlan IQ Connect, Aginera, Agriax and 144 more in ChatGPT ERP & Operations Resource Tools, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.


