Skip to main content
Each time a report or bill is sent from your lab, Flabs sends a POST with a JSON body to your webhook URL. An event is sent only where Flabs would send a WhatsApp anyway (WhatsApp is on for that message and the recipient has a phone number). Like every Flabs webhook, the request carries Content-Type: application/json and, when your integration has an auth token, Authorization: Bearer <token>; check it to make sure the request came from Flabs.

Body

Identifying messages

Every Send click creates one event. These IDs never change, so a resend carries the same values:

Recipient

data.recipient tells you which message this is and who gets it. Always send the WhatsApp to recipient.countryCode + recipient.contact: patientData is always the patient, even when the message is for the doctor, B2B centre or phlebotomist. The recipient’s name is in patientData (patient) or variables (doctorName, b2bName, phlebotomistName).

Patient details

Always present; strings (blank when not recorded) except dispatchMode. Same format as the bill.completed webhook’s patientData (without height, weight and date of birth), plus patientID.

Message values

These are in data.variables, always in this order. Each message carries only the ones it needs. For a “Check Report Status” button (https://records.flabslis.com/report-status/{{1}}), use data.billID.

The five messages

Each goes to recipient.countryCode + recipient.contact.
Sent when the report is ready and the bill has no due. reportLink is the version the lab chose (with or without letterhead).

CRM messages

booking.send, phlebotomist.send and quotation.send are sent when a user clicks WhatsApp on a booking (patient or phlebotomist, in the CRM or the Bookings page) or on a CRM lead (quotation). The CRM’s default texts are on the Templates page. Each goes to recipient.countryCode + recipient.contact.
booking.send: sent when the user clicks WhatsApp → Patient on a booking.

Your response

Flabs reads only the HTTP status code. The body is ignored. Reply within 10 seconds.
Flabs does not fall back to the Flabs number or AiSensy for a subscribed message: your webhook is the only sender. Reply 200 only after your provider accepted the message, and quickly. A retry carries the same data as the first attempt, so a late or failed reply after you already sent it means the patient gets it twice unless you skip repeats. For CRM messages, the user sees Sent to your WhatsApp provider once the event is queued. To stop, delete the webhook.