How to add WhatsApp to Fishbowl
Short answer
Fishbowl has no native WhatsApp channel, so you add one with a small middleware service that reads sales orders, purchase orders and shipments through the Fishbowl API (or its MySQL database, read-only) and sends template messages through the WhatsApp Business Cloud API or a BSP. Replies come back to the same service, which writes limited updates to Fishbowl through the API after a check.
Fishbowl is common in small and mid-size distributors and light manufacturers, and a lot of those customers and suppliers live on WhatsApp rather than email. Buyers ask where their order is, overseas suppliers confirm purchase orders in a chat thread, and drivers send delivery photos. Meanwhile that information sits in Fishbowl, and someone retypes it.
The gap is not the data. Fishbowl already knows the sales order status, the pick and ship state, the tracking number and the PO due date. The gap is a messaging layer that knows WhatsApp's rules: pre-approved templates for business-initiated messages, a 24 hour customer service window for free-form replies, and explicit opt-in per contact.
Because most Fishbowl installs are on-premises on a Windows or Linux server behind a firewall, the design question is mostly about direction. Outbound alerts are easy. Inbound replies need a public webhook endpoint, and you want that endpoint nowhere near your Fishbowl server or its database.
What teams use it for
Order status on demand
A customer messages the number with their sales order number and gets status, ship date and tracking back, pulled from the SO and shipment records.
Shipment notifications
When a shipment is marked shipped in Fishbowl, send a template with carrier and tracking link to the contact on the sales order.
Supplier PO confirmation
Send an issued PO summary to the vendor contact and ask for a confirmed ship date. A reply of a date is captured and proposed as a PO line due date change.
Back-order and delay notices
When a sales order line cannot be fulfilled because on-hand is short, notify the customer with a revised date after a planner approves the wording.
Internal approval nudges
Ping a purchasing manager on WhatsApp when a PO above a threshold is waiting in Issued-pending or Bid Request state, with quick-reply buttons that open the record rather than approving directly.
Fishbowl integration surface
- Fishbowl REST API (newer versions): login with an app name and ID that an admin approves under Integrated Apps, then token-based calls for sales orders, purchase orders, parts, inventory and shipments. Exact endpoints vary by version, so check the API docs for your build.
- Legacy Fishbowl API: a JSON request/response interface over a TCP socket on the server (commonly port 28192), still used by older integrations and some SDK wrappers.
- MySQL database: Fishbowl stores data in MySQL on current versions. Tables such as so, soitem, po, poitem, ship and part are useful for read-only reporting queries, but writing to them directly bypasses business rules and is not advisable.
- Import/export: CSV import tools for sales orders, purchase orders and inventory exist in the client, and scheduled reports can be exported, which gives a no-API fallback for batch notifications.
- Fishbowl users and groups: API access runs as a Fishbowl user, so the integration user's permissions limit what the middleware can read or change.
How it works
- 1
Register the WhatsApp side
Create a Meta Business account, verify the business, add a phone number to the WhatsApp Business Platform (Cloud API) or sign up with a BSP. Number registration moves that number off the consumer app, so use a dedicated line.
- 2
Create a Fishbowl integration user
Make a dedicated Fishbowl user with the narrowest group that reads SOs, POs and shipments, then approve the middleware as an Integrated App in the Fishbowl client.
- 3
Build the poller or event bridge
Fishbowl has no general outbound webhooks, so poll the API on a schedule (every few minutes) for status changes, or run a read-only SQL query against a replica or the live DB at a gentle interval. Store the last seen state to detect transitions.
- 4
Map contacts and consent
Keep a table linking Fishbowl customer and vendor contacts to WhatsApp numbers with an opt-in timestamp and source. Fishbowl custom fields can hold the number, but consent logs belong in the middleware.
- 5
Define and submit templates
Write templates for shipped, delayed and PO-issued messages with variables for order number, date and tracking. Submit them for Meta approval; expect a day or so and a few rejections for vague wording.
- 6
Expose a webhook for inbound replies
Host a small HTTPS service in a DMZ or cloud function that receives WhatsApp webhooks, verifies the signature, and hands messages to the middleware over an outbound-initiated or queued channel.
- 7
Write back with guardrails
Parse replies into a structured proposal, such as a new vendor ship date, and apply it via the API only after a buyer approves or the value passes strict validation.
Example flows
Shipped order alert
Trigger: A sales order shipment changes to Shipped in Fishbowl.
- The poller detects the new shipped status and tracking number.
- The middleware looks up the order contact and checks opt-in.
- It sends the approved shipped template with order number and tracking link.
- Delivery and read receipts are logged against the SO number.
Result: The customer gets proactive tracking without a CSR sending an email, and the log shows who was told what.
Vendor ship date reply
Trigger: A supplier answers a PO message with a date.
- The webhook receives the reply and matches it to the PO via the conversation context.
- A parser extracts the date and flags anything ambiguous.
- The buyer sees a proposed change with current versus new due date.
- On approval the middleware updates the PO item date through the API.
Result: Due dates in Fishbowl reflect what suppliers actually said, and MRP-style planning uses current dates.
Keeping data on-prem
A Fishbowl server on your own hardware can stay entirely inside the network. The middleware sits on an internal host, reaches Fishbowl on localhost or the LAN, and only makes outbound HTTPS calls to the WhatsApp Cloud API. The one inbound requirement is the webhook, which you terminate in a DMZ host or a tiny cloud relay that does nothing but validate signatures and queue messages for the internal service to pull. If you also want AI to interpret free-text replies, run an open-weight model locally so customer messages and order data do not go to a third party model API.
Security checklist
- Never expose the Fishbowl API port or MySQL to the internet; terminate WhatsApp webhooks on a separate host and pull from a queue.
- Use a dedicated Fishbowl user with read-only access for notifications, and a separate approved path for any write.
- Verify the X-Hub-Signature-256 header on every inbound webhook and store the app secret outside code.
- Log opt-in source and timestamp per number, and honour STOP replies by suppressing further sends.
- Send minimal data in messages: order number and status, not pricing or full addresses.
Ways to get it done
Off-the-shelf BSP plus a Zapier or Make style flow
Effort: Days, but limited by what the tool can read from Fishbowl and often needs the API exposed.
Low volume, simple status messages, and a cloud-hosted or API-reachable Fishbowl.
In-house middleware on the WhatsApp Cloud API
Effort: Two to four weeks for notifications and replies, plus ongoing template upkeep.
Teams with a developer who can maintain a poller, templates and a webhook.
Partner build with Netray
Effort: Scoped per project; typically a pilot on one or two flows first.
You want two-way flows with approvals, free-text understanding and on-prem model hosting.
Pitfalls
- !Sending business-initiated messages outside the 24 hour window without an approved template, which fails silently or gets blocked.
- !Using a personal or shared number, then losing it when it is registered to the Cloud API.
- !Polling Fishbowl too aggressively and slowing the client for warehouse users.
- !Treating a customer reply as an authorised change to an order without validation.
- !Forgetting that contact phone formats in Fishbowl are free text and need normalising to E.164.
Frequently asked questions
Does Fishbowl have a built-in WhatsApp integration?
Not to my knowledge. Fishbowl focuses on email, its own mobile app and a range of e-commerce and accounting connectors. WhatsApp needs a custom or third party layer that reads Fishbowl data and talks to the WhatsApp Business Platform. Check your version and marketplace listings in case that has changed.
Can I do this without the Fishbowl API?
Yes, with limits. You can schedule a report or CSV export of open orders and shipments and have a script read it, or run read-only SQL against the MySQL database. That works for notifications but is poor for write-back, where the API respects business rules.
Is the WhatsApp Business app enough?
For a handful of conversations, the Business app is fine. It has no API, no automated status messages tied to Fishbowl and weak audit. Once you want automation or more than a couple of agents, you need the Cloud API or a BSP.
Do customers have to opt in?
Yes. WhatsApp requires that people have agreed to receive business messages, and templates for notifications must be sent only to opted-in numbers. Capture consent at order entry or on a web form and keep the record outside Fishbowl notes so it is auditable.
Can AI read the replies?
It can classify and extract, such as turning a supplier's message into a date and PO reference. Keep the model suggesting rather than writing, and run it on a local open-weight model if message content is commercially sensitive.
Want WhatsApp working on your Fishbowl?
A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.
Get a free assessment