Virtual Submissions
When a project is connected to a Snowflake table, rows appear as virtual submissions. This is 42Forms’ lazy-loading approach to Snowflake data integration.
How It Works
Section titled “How It Works”- Virtual rows are queried directly from the Snowflake source table via the caller connection
- They appear in the submission list with negative IDs (the frontend uses
id < 0to identify them) - No local copy exists until a user edits the row
- On first edit, the row is materialized: a local Submission record is created with all field values copied from Snowflake
- Subsequent edits modify the local copy, with full audit trail (field history, status transitions)
Why Virtual?
Section titled “Why Virtual?”- No data duplication: only edited rows are stored locally
- Real-time data: unedited rows always reflect the current Snowflake source
- Policy enforcement: row access and column masking policies are evaluated on every virtual row query via RCR
Materialization
Section titled “Materialization”When a user edits a virtual submission:
- The full row is fetched from Snowflake
- A local
Submissionrecord is created withsnowflake_row_keylinking back to the source SubmissionFieldrecords are created for every mapped column- The user’s edits are applied on top
- Column masking detection marks fields that contain masked values
Materialization is idempotent: if two requests race to materialize the same row, the second one returns the existing local submission.