Unify Applications
Logo
Navigation Actions

Navigation Actions

Logo

7 mins READ

Actions at a Glance

Action Type

Builder Label

Use When

navigate

Go to URL

Navigating to an external URL, special scheme (tel:, mailto:), or raw path

navigateToPage

Go to Page

Navigating to another page in the same app by page ID

navigateBack

Navigate Back

Going back in browser/app history

setURLParameters

Set URL Parameters

Updating the current page's query string without navigating

openShareDialog

Open Share Dialog

Opening the device or browser share sheet for a message and link

navigation_actions.png
navigation_actions.png

Sends the user to any URL or path. Use this for external websites, special schemes like tel: or mailto:, and raw router paths. For navigating to another page in the same app by page ID, use navigateToPage instead.

Parameters

Parameter

Builder field

Required

Default

Description

path

URL

Required

—

The URL or path to navigate to. Supports {{ }} bindings for dynamic destinations. If missing, empty, or resolving to nothing, the action is a silent no-op.

target

Open in new tab (web apps) or Open in external browser (mobile apps)

Optional

_self

Turning the toggle on saves _blank: a new tab on web, the external browser on mobile. Turning it off saves _self (same tab). Only the exact string _blank opens a new tab.

history

History (Push or Replace)

Optional

push

Appears only when the new-tab toggle is off. Replace swaps the current history entry (Back won't return here); Push adds a new entry. Ignored when target is _blank.

preserveSearchParams

Pass existing search params

Optional

false

When on, merges the current page's query string into the destination URL. Params written inside the URL win per-key on conflict.

Warning: Path resolution rule: A value that starts with http://, https://, //, a special scheme, or a leading slash is used as-is. Anything else gets // prepended (so google.com becomes //google.com). An in-app path with a dot (like pricing.v2) will be treated as an external host — always prefix in-app paths with /.

Note: Put Go to URL last. This action can't fail, so it never stops the actions after it. When it opens the URL in the same tab, place it last on the event — any actions after it still start running as the page changes.

Examples

External URL in a new tab

{ "actionType": "navigate", "payload": { "path": "https://docs.unifyapps.com", "target": "_blank" } }

Same-tab navigation replacing history (e.g. after login)

{ "actionType": "navigate", "payload": { "path": "/dashboard", "history": "replace" } }

Dynamic path with preserved query params

{ "actionType": "navigate", "payload": { "path": "https://example.com/orders/{{ var_orderId['value'] }}", "preserveSearchParams": true } }

Email link

{ "actionType": "navigate", "payload": { "path": "mailto:support@example.com?subject=Help" } }

Navigates to another page in the same app by page ID. This is the correct action for in-app routing — it performs an SPA route change, preserves app state, and supports passing page parameters and inputs to the destination.

Parameters

ParameterTypeRequiredDefaultDescription
pageIdstringRequired—The destination page's ID (e.g. e_68a881264ee5a774c912d4c1 or a template slug like login). If missing or resolving to nothing, the action is a silent no-op. Pick the page from the Page dropdown.
target"_self" | "_blank"Optional_selfOpen in same tab or new tab. Set by the Open in new tab toggle in the form (web apps). Only the exact string _blank opens a new tab.
history"push" | "replace"OptionalpushHistory entry behavior. Set with the History buttons (Push or Replace). Ignored when target is _blank.
pageParamsArray of {key, value}Optional—Values for dynamic path segments (e.g. :id in /order/:id). Each entry has key (segment name) and value (string, supports bindings). A missing segment leaves :param in the path — a visible error in builder/preview, a silent no-op in deployment.
pageInputsobjectOptional—Query-string inputs serialized to the destination URL as ?key=value. Keys should match the destination page's declared query inputs. Supports bindings in values.
overridePageAnimationbooleanOptionalfalseMobile only. When true, applies pageTransitionBehavior. Hidden on web.
pageTransitionBehaviorenumOptional—Mobile only. One of: default, none, slide_from_right, fade, fade_from_bottom, modal, adaptive_sheet, full_screen_modal, overlay. Only applied when overridePageAnimation is true.

Tip: Opening in a new tab: In a web app, turn on the Open in new tab toggle in the action form. The builder saves this as target: "_blank".

To declare the path parameters and query inputs a page accepts, see Page Parameters & Routing. For how actions run in order on an event, see Events & Actions Overview.

Examples

Simple same-tab navigation to a static page

{ "actionType": "navigateToPage", "payload": { "pageId": "e_68a881264ee5a774c912d4c1", "history": "push", "target": "_self" } }

Pass a dynamic path parameter to an order detail page

{ "actionType": "navigateToPage", "payload": { "pageId": "e_orderDetailPage", "pageParams": [ { "key": "id", "value": "{{ currentRow.orderId }}" } ], "target": "_self" } }

Pass query-string inputs to a search results page

{ "actionType": "navigateToPage", "payload": { "pageId": "e_searchPage", "pageInputs": { "query": "{{ textInput_search['value'] }}", "category": "{{ select_category['value'] }}" } } }

Redirect-style navigation after login (no back history entry)

{ "actionType": "navigateToPage", "payload": { "pageId": "e_dashboardPage", "history": "replace" } }

Goes back in the browser or app navigation history — equivalent to the user pressing the browser Back button.

Parameters

Parameter

Type

Required

Default

Description

navigateToSpecificPage

boolean

Optional

false

Go back to a specific page. When on, the user is always sent to the page you choose instead of the previous page. Shows the Page, Dynamic Params and Page Inputs fields.

pageId

string

When navigateToSpecificPage is on

—

The page to go to.

pageParams / pageInputs

array / object

Optional

—

Dynamic Params and Page Inputs for that page, as in Go to Page.

resetToDefaultPage

boolean

Optional

false

Open the default page when there is nothing to go back to. Use it for users who land straight on the page from a shared link or a notification. Without it, a web app goes to the app's root URL and a mobile app does nothing when there is no history.

Note: On mobile apps, navigateBack uses the native navigation stack — it is not just a history pop.

Examples

Simple back button

{ "actionType": "navigateBack", "payload": {} }

Back with fallback page (for deep-linked entry)

{ "actionType": "navigateBack", "payload": { "resetToDefaultPage": true } }

setURLParameters — Set URL Parameters

Updates the current page's query string without triggering a page navigation. The URL changes but the page stays mounted, making this ideal for filter state, active tabs, or any state you want reflected in the URL for sharing or back-button support.

Parameters

Parameter

Type

Required

Default

Description

pageInputs

object

Required

—

Query Parameters: the key-value pairs to set. Keys map to URL parameter names. Values support bindings.

mergeWithExistingQueryParams

boolean

Optional

true

Merge with existing query parameters. When on, parameters you don't set are kept. When off, the query parameters are replaced by exactly what you provide.

history

"push" | "replace"

Optional

push

History: whether to push a new history entry or replace the current one when updating the URL.

Update filter state in URL without navigating

{ "actionType": "setURLParameters", "payload": { "pageInputs": { "status": "{{ select_status['value'] }}", "page": "1" }, "mergeWithExistingQueryParams": true, "history": "replace" } }

openShareDialog — Open Share Dialog

Opens a share sheet with a message and a link. On mobile it opens the device's native share sheet. On web it uses the browser's share feature; if the browser doesn't support sharing (as on many desktop browsers), the user sees an error message instead. It does not copy the link to the clipboard.

Parameters

Parameter

Type

Required

Default

Description

message

string

Optional

—

Share Message: the text to share. Supports bindings.

url

string

Optional

—

URL: the link to share. Supports bindings for dynamic record URLs.

Share a record link with a message

{ "actionType": "openShareDialog", "payload": { "message": "Check out order #{{ currentRow.orderNumber }}", "url": "https://app.example.com/orders/{{ currentRow.id }}" } }

Choosing the Right Navigation Action

ScenarioUse
Link to an external websitenavigate with target: "_blank"
Navigate to another page in this appnavigateToPage with the page ID
Navigate to a page and pass a record ID in the URL pathnavigateToPage with pageParams
Navigate to a page and pass filter values as query paramsnavigateToPage with pageInputs
Back button / cancel buttonnavigateBack
Update URL filters without reloading the pagesetURLParameters
Share a link with the useropenShareDialog
Open an email clientnavigate with path: "mailto:..."
Open a phone dialernavigate with path: "tel:..."
After login, redirect without a Back entrynavigateToPage with history: "replace"