POS actions reference
On this page
Overview
POS actions are named operations that control the behavior of the StoreConnect POS — adding items to the cart, navigating screens, printing receipts, and more. Every button in the POS UI corresponds to an action.
Actions can be triggered in three ways:
- Action items — Salesforce records (POS Action Items) assigned to action groups. Configured through the StoreConnect console.
scAction()JavaScript function — a global function available in custom views and Liquid templates rendered by the POS.- Liquid
{% action %}tag — triggers an action inline within a Liquid template.
Triggering actions
Via action items
Action items are configured in Salesforce under POS Action Groups. Set the Action field to the action identifier and the Params field to a semicolon- or ampersand-separated key-value string.
Via scAction()
The scAction() function is available globally within the POS browser context:
```javascript
scAction(action, params) ```
| Argument | Type | Required | Description |
|---|---|---|---|
action |
String | Yes | Action identifier (e.g. 'cart:add_product') |
params |
Object | No | Key-value pairs of action parameters |
Example:
```javascript
scAction(‘cart:add_product’, { product_code: ‘SKU123’, quantity: 2 })
scAction(‘cart:discount’, { discount_type: ‘percentage’, discount_amount: 10 }) ```
Via Liquid templates
Use Liquid to pass context variables from the current record into action parameters:
```html
```
Parameter format
Parameters in the Params field of a POS Action Item can use semicolons or ampersands as separators:
product_code=SKU123&quantity=2&unit_discount=5
product_code=SKU123;quantity=2;unit_discount=5
Liquid template variables are resolved before the action runs:
order_sc_id={{ record.id }};print_template_sfid=a2cMn00003s4X88IAE
Action chaining
An action item can have a Next Action Item configured. When the first action completes, the next action runs automatically. Some actions pass context to the next action — for example, cart:add_product passes {{ cart_item_sc_id }} so a follow-up action can reference the newly added item.
Cart actions
cart:add_product
Adds a product to the current cart.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id |
String | No* | Product Salesforce ID |
product_code |
String | No* | Product code (alternative to product_id) |
quantity |
Number | No | Quantity to add (default: 1) |
unit_price |
Number | No | Override unit price. Locks the price — prevents repricing if the customer changes. |
unit_discount |
Number | No | Apply a unit discount |
name |
String | No | Override the product name on the cart item |
serial_numbers |
String | No | Comma-separated serial numbers |
pending |
Boolean | No | Mark the item as pending (default: false) |
pay_now |
String | No | Deposit mode: "all", "none", a dollar amount, or "N%" |
*Either product_id or product_code is required.
If the product has variants, variable pricing, is a rental, or uses voucher assets, the product selection modal opens before the item is added.
Next action context:
product_id — product Salesforce ID
cart_item_sc_id — SC ID of the new cart item
Example:
product_code=SKU123&quantity=2&pay_now=50%
cart:item:update
Updates an existing cart item. Can change quantity, price, discount, name, serial numbers, pending status, or swap the product entirely.
| Parameter | Type | Required | Description |
|---|---|---|---|
cart_item_sc_id |
String | Yes | SC ID of the cart item to update |
quantity |
Number | No | New quantity (must be ≥ 1) |
unit_price |
Number | No | New unit price (non-negative) |
unit_discount |
Number | No | New unit discount (non-negative) |
name |
String | No | Override display name |
serial_numbers |
String | No | Comma-separated serial numbers |
pending |
Boolean | No | Set pending status ("true" or "false") |
product_id |
String | No† | Product Salesforce ID to swap to |
product_code |
String | No† | Product code to swap to |
pay_now |
String | No | Deposit mode: "all", "none", a dollar amount, or "N%" |
†For product swapping, provide exactly one of product_id or product_code. Cannot swap to rental products, products with variants, or asset-backed vouchers. If the item is linked to a fulfillment, that fulfillment is flagged for reconfirmation.
Example (swap product from a layout record):
cart_item_sc_id={{ record.id }};product_id=01tXXXXXXXXXXXXXXX
cart:item:remove
Removes a cart item. Cleans up any associated rental asset holds and fulfillments.
| Parameter | Type | Required | Description |
|---|---|---|---|
cart_item_sc_id |
String | Yes | SC ID of the cart item to remove |
cart:add_contact
Assigns a customer to the current cart.
| Parameter | Type | Required | Description |
|---|---|---|---|
contact_sc_id |
String | Yes | SC ID of the contact to assign |
cart:remove_contact
Removes the customer from the current cart. Takes no parameters.
cart:discount
Applies a cart-wide discount, distributed across eligible items.
| Parameter | Type | Required | Description |
|---|---|---|---|
discount_amount |
Number | Yes | Discount value |
discount_type |
String | Yes | "amount" or "percentage" (legacy: "dollar" or "percent") |
Discounts that exceed the user’s permitted maximum or the product minimum sell price rules are rejected with an alert.
Example:
discount_amount=15;discount_type=percentage
cart:deposit:set
Sets pay-now deposit amounts across all items in the current cart.
| Parameter | Type | Required | Description |
|---|---|---|---|
pay_now |
String | Yes | "all", "none", a dollar amount (e.g. "50"), or a percentage (e.g. "25%") |
| Value | Effect |
|---|---|
"all" |
Pay full price on all items |
"none" |
Pay nothing now on all items |
"25%" |
Each item’s deposit is 25% of its discounted unit price |
"50" |
Distributes $50 proportionally across all items |
Individual product minimum deposit rules are respected.
cart:resume
Resumes a previously saved (parked) cart. If the cart is already linked to an existing order, an alert is shown and the cart cannot be resumed.
| Parameter | Type | Required | Description |
|---|---|---|---|
cart_sc_id |
String | Yes | SC ID of the cart to resume |
cart:toggle
Toggles the cart panel open or closed. If the POS is not on the home screen, navigates home first, then opens the cart. Takes no parameters.
cart:item:cancel
Cancels a cart item on a cart linked to an open order. Sets the item’s quantity to 0, which mirrors to the linked order line and stamps it cancelled for the audit trail. Cancelled items remain visible (muted/struck-through) but contribute zero to totals; restoring the quantity reverses the cancellation.
| Parameter | Type | Required | Description |
|---|---|---|---|
cart_item_sc_id |
String | Yes | SC ID of the cart item to cancel |
cart:new
Parks the current cart and makes a fresh empty cart active. Does not create or touch any order record. To start a cart linked to a new open order, use cart:new:open_order. Takes no parameters.
checkout:start
Starts checkout from a cart, mimicking a click of the cart’s “Pay” button. Runs the same validation the Pay button uses (empty cart, pending/expired items, customer-required rules, discount limits, etc.) and shows an explanatory alert without navigating if a check fails. When nothing is owed (a pure refund or fully-deposited cart), it creates the order immediately and navigates to the order record instead of the payment screen.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | No | Salesforce ID of an existing order to check out (additional payment or refund capture). Takes precedence over cart_sc_id. |
cart_sc_id |
String | No | Salesforce ID of the cart to check out. Defaults to the active cart; if different, that cart is resumed first. |
Order actions
order:return
Processes a return for an existing order. Loads returnable items into the cart as refund lines and navigates to the home screen.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | Salesforce ID of the order to return |
order_item_sc_ids |
String | No | Comma-separated order item Salesforce IDs to return. Omit to return all returnable items. |
quantities |
String | No | Comma-separated quantities per item (parallel to order_item_sc_ids). Defaults to full remaining quantity. |
amounts |
String | No | Comma-separated amounts per item — "N%" or a dollar value. |
new_cart |
String | No | "true" to park the current cart and start fresh |
Items with pending fulfillments or zero remaining quantity are skipped automatically.
Example (return specific items at partial amounts):
order_sc_id=abc-123;order_item_sc_ids=id1,id2;quantities=1,3;amounts=100%,50%
Open order actions
Open orders are editable Order records (s_c__pos_order_type__c = "OPEN") linked to a cart, used outside the standard checkout flow (for example, hospitality tabs). These actions require the store variable pos.open_orders.enabled to be set. All of them work offline — changes are enqueued and sync to Salesforce on reconnect.
cart:new:open_order
Creates a new open order. If the current cart is empty, the order is linked to it; otherwise the current cart is parked and the order is linked to a fresh cart. The order is created as a shell (no payments or fulfillments).
| Parameter | Type | Required | Description |
|---|---|---|---|
memo |
String | No | Short note saved on the order (max 80 characters); shown as a banner on the cart |
cart:update:open_order
Converts the current active cart into a new open order and links it, preserving the cart’s items and customer. Errors if the cart is already linked to an order — use open_order:update to edit a linked order instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
memo |
String | No | Short note saved on the order (max 80 characters) |
open_order:submit
Commits the active cart to its linked open order (the hospitality “submit to the kitchen” action). Reprices and transmits the full order as an idempotent upsert keyed on each line’s sc_id, splits multi-quantity lines into individual units, and creates fulfillments for newly-submitted lines. Commit only — it does not clear the cart (pair with cart:new for a “Submit & clear” button). Requires the active cart to be linked to an open order. Takes no parameters.
open_order:update
Edits the memo of the open order already linked to the active cart (saves immediately). Only the memo can be changed this way.
| Parameter | Type | Required | Description |
|---|---|---|---|
memo |
String | No | New memo (max 80 characters). Omit the parameter entirely to no-op; pass a blank value to clear the memo. |
order:cancel
Cancels an open order so it no longer appears in the Open Orders list. If the cancelled order is the one currently loaded in the cart, a fresh cart is started automatically.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the open order to cancel |
order:resume
Resumes an open order for continued editing by making its linked cart the active cart (the previously active cart is parked, not discarded). Does not navigate — the caller is responsible for navigation.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the open order to resume |
Navigation actions
Navigation actions change the active screen. They do not take effect if the POS is in a state that prevents navigation (e.g. an active modal blocking the UI).
Screen navigation
| Action | Description |
|---|---|
nav:home |
Navigate to the home screen |
nav:checkout |
Navigate to the checkout screen |
nav:authentication |
Navigate to the authentication screen |
nav:register |
Navigate to the register selector |
nav:settings |
Navigate to settings |
nav:labels |
Navigate to the barcode label printing interface |
List views
| Action | Description |
|---|---|
nav:customers |
Navigate to the customers list |
nav:products |
Navigate to the products list |
nav:orders |
Navigate to the orders list |
nav:carts |
Navigate to the carts list |
nav:fulfillments |
Navigate to the fulfillments list |
nav:suppliers |
Navigate to the suppliers list |
nav:stock_adjustments |
Navigate to stock adjustments |
nav:stock_requests |
Navigate to stock requests |
Record views
| Action | Parameters | Description |
|---|---|---|
nav:customers:record |
customer_id |
View a customer record |
nav:customers:create |
— | Open the customer creation form |
nav:customers:update |
customer_id |
Open the customer edit form |
nav:orders:record |
order_id |
View an order record |
nav:carts:record |
cart_id |
View a cart record |
nav:products:record |
product_id |
View a product record |
Fulfillment and station views
| Action | Parameters | Description |
|---|---|---|
nav:fulfillments:record |
fulfillment_id |
View a fulfillment record |
nav:fulfillment_stations |
register_id (optional) |
Navigate to the fulfillment stations overview |
nav:fulfillment_stations:record |
station_id |
View a fulfillment station record |
nav:station_fulfillments |
station_id, optional view, statuses, sort |
Open a station’s ticket workspace |
nav:outlet_stations |
— | Navigate to the outlet stations screen |
Each action above has an open:* counterpart (e.g. open:station_fulfillments) that opens the same target as a pushed sub-page — see Open actions. For nav:station_fulfillments: view is grid (default), rail, double-rail, flex-grid, rows, or list; statuses is a comma-separated subset of requested, preparing, ready_for_pickup, complete (default requested,ready_for_pickup); sort is field:direction where field is updated or status (default status:asc).
Custom layouts and views
| Action | Parameters | Description |
|---|---|---|
nav:layout |
layout or layout_sc_id, optional record_id |
Navigate to a custom POS layout |
nav:view |
view or view_sc_id, optional record_id, object_name |
Navigate to a custom POS view |
Session management
| Action | Parameters | Description |
|---|---|---|
nav:session_end |
— | End the current shift |
nav:session_add_user |
— | Add a user to the session |
nav:session_start_user |
user_id |
Start session for a specific user |
nav:session_start_balance |
user_id, amount |
Start session with an opening balance |
nav:disconnect_register |
— | Navigate to the register disconnection screen |
Open actions
Open actions display a standalone full-screen page, separate from the main POS navigation stack.
| Action | Parameters | Description |
|---|---|---|
open:customers:create |
— | Open the customer creation form as a standalone page. Does not assign the customer to the cart. |
open:customers:record |
customer_id (required) |
Open a customer record as a standalone page |
open:customers:update |
customer_id (required) |
Open the customer edit form as a standalone page |
open:orders:record |
order_id |
Open an order record as a standalone page |
open:fulfillments:record |
fulfillment_id |
Open a fulfillment record as a standalone page |
open:fulfillment_stations |
register_id (optional) |
Open the fulfillment stations overview as a standalone page |
open:fulfillment_stations:record |
station_id |
Open a fulfillment station record as a standalone page |
open:station_fulfillments |
station_id, optional view, statuses, sort |
Open a station’s ticket workspace as a standalone page |
open:outlet_stations |
— | Open the outlet stations screen as a standalone page |
open:layout |
layout or layout_sc_id, optional record_id |
Open a custom POS layout as a standalone page |
open:view |
view or view_sc_id, optional record_id, object_name |
Open a custom POS view as a standalone page |
Modal actions
modal:close
Closes the topmost modal. Takes no parameters.
modal:open
Deprecated. A generic modal opener that dispatches to a specific modal action based on the parameters supplied (url → modal:open:url, layout_identifier → modal:open:layout, alert → modal:open:alert, otherwise modal:open:view). Use the specific modal:open:* action instead.
modal:open:alert
Opens an alert modal.
| Parameter | Type | Required | Description |
|---|---|---|---|
alert |
String | Yes | Alert content or identifier |
modal:open:email_receipt
Opens a modal to send an email receipt for an order. Pre-fills the recipient address with the contact’s email if available.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the order |
modal:open:pay_by_link
Opens a modal to email a payment link for an order with an outstanding balance. Includes a QR code option for a scannable payment link.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the order |
modal:open:return
Opens an interactive return modal for an order, allowing the user to select items and quantities before processing.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the order |
modal:open:url
Opens a modal displaying a custom URL. Liquid context variables are resolved before the URL is rendered.
| Parameter | Type | Required | Description |
|---|---|---|---|
url |
String | Yes | URL to load in the modal |
modal:open:view
Opens a custom POS view inside a modal. Additional parameters are merged into the Liquid context for the view.
| Parameter | Type | Required | Description |
|---|---|---|---|
view_identifier |
String | Yes | Identifier of the view to display |
| (additional) | * | No | Any extra parameters become Liquid context variables |
modal:open:layout
Opens a custom POS layout inside a modal. Context from the action chain is available to the layout’s Liquid templates.
| Parameter | Type | Required | Description |
|---|---|---|---|
layout_identifier |
String | Yes | Identifier of the layout to display |
modal:open:action_group
Opens a POS Action Group as a modal drill-in grid, rendering the group’s action items.
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id |
String | Yes | Salesforce ID of the Action Group to render |
name |
String | No | Header label for the modal (defaults to the group’s name) |
modal:open:cancel_order_confirm
Opens a confirmation modal for cancelling an open order. On confirm, dispatches order:cancel; the modal stays open on failure so the user can retry.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the open order to cancel |
modal:open:new_open_order
Opens a confirmation modal for creating a new open order, with an optional memo input. On confirm, dispatches cart:new:open_order with the entered memo.
| Parameter | Type | Required | Description |
|---|---|---|---|
memo |
String | No | Pre-fills the modal’s memo input (max 80 characters) |
modal:open:station_ticket
Opens a station ticket in a modal, looked up from the live sync stream.
| Parameter | Type | Required | Description |
|---|---|---|---|
fulfillment_id |
String | Yes | SC ID of the fulfillment/ticket to display |
select_mode |
Boolean | No | "true" to open in the line-selection view |
select_order_item_id |
String | No | Order item to preselect (used with select_mode) |
Station actions
Actions for managing fulfillment stations and their tickets. The *:confirm and *:picker variants open a modal to gather input before performing the operation. Most take an optional station_name used only for the confirmation message or snackbar.
station:activate
Sets a fulfillment station’s status back to active (restored).
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station to activate |
station_name |
String | No | Display name used in the confirmation message |
station:activate:confirm
Opens a confirmation modal for activating a station. On confirm, dispatches station:activate.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station |
station_name |
String | No | Display name shown in the modal |
station:degrade
Sets a fulfillment station’s status to degraded.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station to degrade |
station_name |
String | No | Display name used in the confirmation message |
station:degrade:confirm
Opens a confirmation modal for degrading a station. On confirm, dispatches station:degrade.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station |
station_name |
String | No | Display name shown in the modal |
fallback_station_name |
String | No | Name of the fallback station shown in the modal |
station:cover
Starts covering a station from the active register. Shows a confirmation snackbar.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station to cover |
station_name |
String | No | Display name shown in the snackbar |
station:cover:picker
Opens the picker modal for choosing stations to cover. Takes no parameters.
station:cover:confirm
Opens a confirmation modal for covering a station. On confirm, starts covering it.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station |
station_name |
String | No | Display name shown in the modal |
station:stop-cover
Stops covering a station from the active register. Shows a confirmation snackbar.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station to stop covering |
station_name |
String | No | Display name shown in the snackbar |
station:move
Bulk-moves the given fulfillments (tickets) to another station.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | No | SC ID of the source station |
destination_station_id |
String | Yes | SC ID of the destination station |
destination_name |
String | Yes | Destination display name (shown in the confirmation alert) |
fulfillment_ids |
String | Yes | Comma-separated fulfillment SC IDs to move |
station:move:picker
Opens the bulk-move picker modal. Three entry modes: with station_id + fulfillment_ids, jumps straight to the destination picker; with station_id only, opens at ticket selection; with station_ids (comma-separated), opens at the source picker.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | No | Source station to lock |
fulfillment_ids |
String | No | Comma-separated fulfillment SC IDs to pre-select |
station_ids |
String | No | Comma-separated station SC IDs to offer as sources |
station_name |
String | No | Display name shown in the modal |
station:assign-register
Assigns a fulfillment station to a register, or unassigns it when register_id is blank. The change is queued as an unsaved change against the station record, so it works offline. The previous register stops auto-printing for the station as soon as the change syncs, and the new register picks up the station’s pending tickets once it is online with a fulfillment printer. Shows a confirmation snackbar.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station to reassign |
register_id |
String | No | SC ID of the register to assign. Leave blank to unassign the station. |
station_name |
String | No | Display name shown in the snackbar (defaults to “Station”) |
register_name |
String | No | Register name shown in the snackbar (defaults to “register”) |
station:assign-register:picker
Opens the register-assignment picker modal. Three entry modes: with station_id, opens straight at register selection for that station; without station_id, opens at a station-picker first step; with intent set to unassign, opens straight at the unassign confirmation. On confirm, dispatches station:assign-register.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | No | SC ID of the station to assign |
station_name |
String | No | Display name shown in the modal |
current_register_id |
String | No | SC ID of the station’s current register, used to preselect it |
intent |
String | No | unassign to open at the unassign confirmation step |
station:auto-print:on
Turns on auto-printing of new tickets for a station the active register is covering. Tickets already held for the station count as historical and are not printed; only tickets created after the switch-on point print automatically. Shows a snackbar when station_name is supplied.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station |
station_name |
String | No | Display name shown in the snackbar. Omit to suppress the snackbar. |
station:auto-print:off
Turns off auto-printing of new tickets for a covered station. Shows a snackbar when station_name is supplied.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station |
station_name |
String | No | Display name shown in the snackbar. Omit to suppress the snackbar. |
station:printer:picker
Opens the printer picker modal for a station.
| Parameter | Type | Required | Description |
|---|---|---|---|
station_id |
String | Yes | SC ID of the station |
station_name |
String | No | Display name shown in the modal |
station:reprint
Reprints a station ticket using the same print-and-mark pipeline as auto-print. Requires a connected register.
| Parameter | Type | Required | Description |
|---|---|---|---|
fulfillment_id |
String | Yes | SC ID of the ticket (fulfillment) to reprint |
Print actions
All print actions require a printer to be connected and configured in POS settings. Errors are displayed as alerts if the template or printer cannot be resolved.
print:receipt
Prints an order receipt using the configured receipt template, or an override template.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the order |
print_template_sfid |
String | No | Salesforce ID of a receipt-context print template to use instead of the settings template |
print:cart
Prints the current cart contents using the configured cart template, or an override template.
| Parameter | Type | Required | Description |
|---|---|---|---|
cart_sc_id |
String | No | SC ID of the cart to print. Defaults to the active cart. |
print_template_sfid |
String | No | Salesforce ID of a cart-context print template to use instead of the settings template |
print:labels
Prints product labels using the configured label template, or an override template.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_sfids |
String | Yes | Comma-separated list of product Salesforce IDs |
quantity |
Number | No | Labels to print per product (default: 1) |
print_template_sfid |
String | No | Salesforce ID of a label-context print template to use instead of the settings template |
Example (from a product layout record):
product_sfids={{ record.sfid }};quantity=2
print:quest_receipt
Prints the Quest Airpay TAP transaction receipt for an order. Uses a hardcoded template. For a customized receipt, use print:receipt with a custom template that accesses payment.gateway_receipt.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_sc_id |
String | Yes | SC ID of the order |
print:template
Prints using any print template directly, regardless of context type. Additional parameters are passed as Liquid context to the template. Supports all printer types — thermal receipt, PDF document, and label.
| Parameter | Type | Required | Description |
|---|---|---|---|
print_template_sfid |
String | Yes | Salesforce ID of the print template to use |
| (additional) | * | No | Any extra parameters become Liquid context variables in the template |
Example:
print_template_sfid=a1b2c3d4e5f6g7h8;order_id={{ record.id }}
Sync actions
sync
Performs an incremental sync, downloading only records that have changed since the last sync. Does nothing if a sync is already in progress. Takes no parameters.
sync:full
Performs a full re-sync, re-downloading all data. Can optionally target a single object.
| Parameter | Type | Required | Description |
|---|---|---|---|
object |
String | No | Object to re-sync. Accepts Salesforce API names (e.g. product2, s_c__cart__c) or legacy aliases: orders, stores, fulfillments. Omit to re-sync everything. |
sync:pause
Pauses syncing for all objects currently syncing. In-progress page requests complete before stopping. The paused state persists across page reloads. Takes no parameters.
sync:resume
Resumes syncing for paused objects and re-syncs them immediately.
| Parameter | Type | Required | Description |
|---|---|---|---|
object |
String | No | Object to resume. Accepts the same values as sync:full. Omit to resume all paused objects. |
sync:clear
Deletes local records then re-downloads them from Salesforce. Unlike sync:full (which only resets the cursor), sync:clear removes the local rows first, so stale records no longer in scope are cleared out. Certain records the running app still needs are preserved (current outlet, register, shift, user, the active price book, and any orders not yet pushed). A confirmation modal is shown before executing.
| Parameter | Type | Required | Description |
|---|---|---|---|
object |
String | No | Object to clear. Accepts a sync object API name (e.g. product2, s_c__cart__c) or a legacy alias (orders, stores, fulfillments). Omit to clear every table. |
Record actions
These actions create, update, or delete records in the POS local database (IndexedDB). The target table must use s_c__sc_id__c as its primary key.
record:save
Creates or updates a record. An SC ID is auto-generated if not provided.
| Parameter | Type | Required | Description |
|---|---|---|---|
object_name |
String | Yes | API name of the object/table |
| (additional) | * | No | Any extra parameters become field values on the record |
record:delete
Deletes a record from a local database table.
| Parameter | Type | Required | Description |
|---|---|---|---|
object_name |
String | Yes | API name of the object/table |
record_sc_id |
String | Yes | SC ID of the record to delete |
System actions
lock
Locks the POS to the session screen, requiring users to re-authenticate before continuing. Takes no parameters.
close
Closes the current view or modal by popping it from the page stack. If the closed entry is a non-modal page with a modal behind it, both are closed. Takes no parameters.
cash_drawer:open
Sends an open command to the connected cash drawer via the receipt printer integration. Takes no parameters.
printer:remove
Removes a paired printer from POS settings.
| Parameter | Type | Required | Description |
|---|---|---|---|
printer_id |
String | Yes | ID of the printer to remove |
Unsaved changes actions
Actions for managing the local persistence queue of unsaved changes (Settings → Advanced → Manage data → Unsaved changes). Retrying is disabled while offline.
unsaved_changes:retry
Resets a single unsaved change to pending and re-sends it immediately rather than waiting for the next automatic retry.
| Parameter | Type | Required | Description |
|---|---|---|---|
change_id |
String | Yes | The changeId of the unsaved change to retry |
unsaved_changes:retry_all
Resets every non-succeeding unsaved change (stalled, exhausted, invalid) to pending and re-sends them all immediately. Blocked changes are left alone — they clear on their own once the change they depend on succeeds. Takes no parameters.
unsaved_changes:discard
Discards a single unsaved change, removing it from the queue so it is never sent. The optimistic local value is not reverted — it remains until the next server sync overwrites that record.
| Parameter | Type | Required | Description |
|---|---|---|---|
change_id |
String | Yes | The changeId of the unsaved change to discard |
Was this article helpful?
Thanks for your feedback! It helps us improve our docs.