Actions32
- Analytics Actions
- Batch Actions
- Customer Actions
- Order Actions
- Product Actions
- Purchase Actions
- Raw Request Actions
- System Actions
- Vendor Actions
- WhatsApp Actions
Customer → Upsert Customer
AI-generatedSummary
Creates or updates a customer in VitePOS via the bridge's POST /wp-json/vtab/v1/customers/upsert endpoint, using either individual fields or a raw JSON body.
Inputs
- Input Mode — 'Use Fields' (default) builds the body from Customer Fields; 'Advanced JSON' sends the JSON Body as-is.
- Customer Fields — Collection shown in Fields mode. Options: id, external_id, email, first_name, last_name, phone, company, address_1, address_2, city, state, postcode, country, and dry_run. Only filled values are sent (empty strings are skipped). Which fields the server uses to match an existing customer isn't defined in the node, so check the bridge's behavior.
- Dry Run — Inside Customer Fields. When true, adds dry_run: true to the request, so the bridge can validate the request without saving (server-side behavior).
- JSON Body — Shown in Advanced JSON mode. Custom request body, as a JSON string or object. Invalid JSON throws an error. Defaults to {"dry_run": true}.
Output shape
One item per input item. The JSON is the bridge API response, with a human-readable response string added at the top (e.g. 'Customer request completed.').
If the API response already has a
responsekey, the original is placed underraw. If the bridge returns status/success false, theresponsetext is its message. With Continue On Fail, failed items return {error: message}. An empty body is sent as no body at all.
Examples
Example 1: Sync a CRM contact into VitePOS as a customer
Input Mode: Use Fields; Customer Fields: external_id, email, first_name, last_name, phone set from expressions.
Example 2: Test a customer payload without saving
Customer Fields: email plus Dry Run enabled.
Example 3: Send a custom payload
Input Mode: Advanced JSON; JSON Body: {"email":"a@b.com","first_name":"Ann","city":"Lagos"}.