Portal Community

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredPermanent System User access token. Store in BizFirst Credentials Manager.
phoneNumberIdRequiredNumeric string ID of the sending WhatsApp Business phone number.
apiVersionOptionalMeta Graph API version. Defaults to v18.0.

Operation

FieldRequiredDescription
toRequiredRecipient's phone number with country code, no + prefix (e.g. 14155552671).
latitudeRequiredLatitude as a decimal number (e.g. 37.4847). Range: -90 to 90.
longitudeRequiredLongitude as a decimal number (e.g. -122.1477). Range: -180 to 180.
nameOptionalLocation name displayed as the pin title (e.g. BizFirst HQ). Displayed in bold above the address.
addressOptionalFormatted address displayed below the location name (e.g. 123 Main St, San Francisco, CA 94105).
Coordinate precision: Use at least 4 decimal places of precision for accurate pin placement (e.g. 37.4847, not 37.48). Insufficient precision may place the pin in the wrong building or street.

Sample Configuration

{
  "resource": "message",
  "operation": "sendLocation",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "to": "{{ $input.customerPhone }}",
  "latitude": "{{ $input.branchLatitude }}",
  "longitude": "{{ $input.branchLongitude }}",
  "name": "{{ $input.branchName }}",
  "address": "{{ $input.branchAddress }}"
}

Validation Errors

ErrorCause
accessToken is requiredThe accessToken field is empty.
phoneNumberId is requiredThe phoneNumberId field is empty.
to is requiredThe to field is empty.
131026 (Meta)Recipient is not a valid WhatsApp account.
131047 (Meta)24-hour customer service window has expired.
Invalid coordinates (Meta)Latitude or longitude is outside valid range. Validate in a Function node before calling this operation.

Output

Success Port

FieldTypeDescription
messageIdstringUnique WhatsApp message ID (wamid).
phoneNumberIdstringThe sending phone number ID.
tostringThe recipient phone number.
statusstring"sent" on success.
errorCodestringEmpty on success.
errorMessagestringEmpty on success.
rawResponsestringFull raw JSON from the Meta API.

Error Port

FieldTypeDescription
statusstring"failed" or "error".
errorCodestringMeta error code or BizFirst validation code.
errorMessagestringHuman-readable error description.
rawResponsestringRaw API error response.

Sample Output

{
  "messageId": "wamid.HBgLMTQxNTU1NTI2NzEVAgARGBIzQzM4NjhGQTExMjQ3RBMAA",
  "phoneNumberId": "123456789012345",
  "to": "14155552671",
  "status": "sent",
  "errorCode": null,
  "errorMessage": null,
  "rawResponse": "{\"messaging_product\":\"whatsapp\",\"contacts\":[{\"input\":\"14155552671\",\"wa_id\":\"14155552671\"}],\"messages\":[{\"id\":\"wamid.HBgLMTQxNTU1NTI2NzEVAgARGBIzQzM4NjhGQTExMjQ3RBMAA\"}]}"
}

Expression Reference

ValueExpressionNotes
Message ID{{ $output.sendLoc.messageId }}Retain for audit trail or deletion.
Recipient{{ $output.sendLoc.to }}For delivery confirmation logging.
Status{{ $output.sendLoc.status }}Branch on outcome in IfCondition.
Error detail{{ $output.sendLoc.errorMessage }}Log on the error port for diagnostics.

Node Policies & GuardRails

Policy AreaRecommendation
Credential storageStore the access token in BizFirst Credentials Manager. Never inline.
Coordinate validationValidate that latitude is within -90 to 90 and longitude is within -180 to 180 in a Function node before calling this operation. Invalid values cause a Meta API error that is not easily actionable without pre-validation.
Name and address fieldsAlways provide the name and address fields for business-sent locations. A pin with no label is confusing for recipients and looks unprofessional.
Live location privacyDo not send real-time GPS locations of employees or delivery drivers without their explicit consent and a disclosed privacy policy. Static business locations do not require special consent.
24-hour windowLocation messages are free-form. Outside the customer service window, use a template with a location body (text with coordinates) as an alternative.
Error portConnect the error port. Invalid recipient numbers and expired conversation windows are the most common failure modes for location messages.

Examples

Branch Location on Customer Enquiry

{
  "resource": "message",
  "operation": "sendLocation",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "to": "{{ $input.customerPhone }}",
  "latitude": "37.48472",
  "longitude": "-122.14778",
  "name": "BizFirst Palo Alto Branch",
  "address": "123 University Ave, Palo Alto, CA 94301\nHours: Mon-Fri 9AM-5PM"
}

A customer asks "Where is your nearest branch?" via WhatsApp. The workflow uses the customer's postcode to select the nearest branch from a CRM lookup, then sends that branch's stored coordinates and address.

Delivery Driver Eta Location

{
  "resource": "message",
  "operation": "sendLocation",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "to": "{{ $input.customerPhone }}",
  "latitude": "{{ $input.driverLat }}",
  "longitude": "{{ $input.driverLon }}",
  "name": "Your delivery driver",
  "address": "Estimated arrival: {{ $input.etaMinutes }} minutes"
}

A delivery tracking webhook triggers this workflow when the driver enters a 2km geofence around the delivery address. The driver's GPS coordinates are passed as input, and the address field is repurposed to show the ETA.

Event Venue for Registered Attendees

{
  "resource": "message",
  "operation": "sendLocation",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "to": "{{ $input.attendeePhone }}",
  "latitude": "{{ $config.eventLatitude }}",
  "longitude": "{{ $config.eventLongitude }}",
  "name": "{{ $config.eventName }}",
  "address": "{{ $config.venueName }}, {{ $config.venueAddress }}\nEntrance: Main lobby on {{ $config.entranceStreet }}"
}

A Loop node iterates over registered attendees 2 hours before event start. Each attendee receives the venue pin with the specific entrance instructions in the address field. The address field is flexible text — use it for any contextual information the recipient needs.