Guide / Frequently asked questions

Frequently asked questions

How many automation graphs does each app have?

Just one for the whole app - not a separate graph per screen. The distinction between screens is made with screenId on screen-enter/leave events, or simply because the elementId you picked only exists on one particular screen.

What's the difference between db.* and sdb.*?

db.* is local storage on the visitor's own device only (private, not shared). sdb.* is a server-side table - it can be shared by all visitors or private to each one, depending on the scope you chose.

Where are cache variables saved?

On the visitor's own device (localStorage). A returning visitor keeps their value, but another visitor doesn't see it. For shared data you need a server-side data table.

Can I write real JavaScript in the "Run code" action?

No. It's a small, focused path language for reading/writing elements, local storage, server tables and variables - not eval and not full JS.

Why does an action I set up "do nothing"?

The editor doesn't block saving an action with empty fields. First check whether its target field (element/table/screen) is actually filled in.

How do I send an immediate push notification vs. a scheduled one?

If "Send push notification" is wired to an interactive event (like a button click) - it's sent immediately. If it's wired to "Scheduled notification" - the server checks every app every minute and sends at the configured time/days, even while the app is closed.

How do I store a password without exposing it in the data table?

With the hash filter - store {{inpw|hash}} instead of the password itself, and on login compare the hash of what was typed to what was saved. Full detail and a complete example are in the "Functions and expressions" chapter.