Restricting a checkout button from writing data across table contexts (Maker Plan)

Hi Glide Community,

I am building a dual-sided marketplace mobile application on the Maker Plan, and I am stuck on a critical data-context roadblock during my checkout execution.📱 My Current Architecture:Shopping Cart Screen Source: My main checkout page is sourced from the Users table. This is structurally required to keep my layout stable and calculate user-specific basket metrics.Order Lifecycle: I have an “Add to Cart” button that correctly uses Add Row to generate an initial transaction record inside my master Orders table with all the correct item metadata (Deal_ID, Item_Name, Store_Email) and a default text status of Awaiting Payment.Store Dashboard: Fully built. It filters a collection list from the Orders table with a strict security shield condition: Store_Email is signed-in user AND Status is Paid.

🛑 The Problem:On my Users-sourced checkout page, I have a purple “Pay Now” button. Right now, if I try to use an Add Row action on this button to write Paid, it creates a completely separate duplicate row that is completely blank because the button is blind to the active cart item metadata.Instead of creating a duplicate row, I need this button to reach into my Orders table and flip that original row’s status from Awaiting Payment to Paid.However, when I add a Set Column Values step to this button’s custom action timeline, the Row selector box dropdown only displays This Item and User Profile. It completely hides all my relations and data paths to other tables. Because it is locked onto the user context, I am physically blocked from targeting that specific order row to change its status.

🎯 What I need help with:Since my screen is anchored to the Users table, how can I configure an action or data link that allows a button to use Set Column Values to modify a column cell inside the Orders table for a specific row only?What is the standard developer pattern to pass the row reference back to a button sitting on a user profile screen so I can flip the status to Paid natively without causing global blanket effects on historical records?

Thank you for your help!

If the relation is a single relation (multiple is unchecked), it will be available for the set column action.

Hi Jeff. Thank you so much for pointing out the Single vs. Multiple relation rule. That makes perfect sense regarding why Set Column Values was hidden from my action dropdown!

I went ahead into my Users table, created a brand-new relation column named Latest_Order_Link, and made sure the ‘Match multiple’ box is completely unchecked to ensure it’s a single relation.

I set it to match:
:backhand_index_pointing_right: Users > @ Email matches Orders > @ Customer_Email

The Roadblock:
Even though it’s unchecked, the column cells are showing up as broken question marks (?), and my purple check-out button’s Set Column Values action is still failing to change the status row text cell over to Paid.

Because a user might have multiple historical order rows sitting in the master Orders table from past transactions, a standard unchecked email relation is getting confused or staying completely blank during a fresh checkout loop.

Since my screen layout is anchored onto the Users table context, what is the best developer pattern or helper column (like a Single Value or Rollup column) to force this Single Relation to always lock onto the single, newest active checkout row inside the Orders table so my button can update its status cell natively?

It doesn’t matter what you see in a relation column. You are just trying to establish a link to related rows. If you see anything (question mark included), that mean it found a row.

You probably have multiple rows that can match. with the multiple checkbox unchecked, it just going to lock onto the first one. Not the last one. Your button is probably changing a previous record. Read this thread for a way around that. You could also use a query column in place of a relation to drill down deeper to the correct row you want.