Customers and guests
A dealer’s customers come in two kinds:
- Users (
users) have an account. They signed in, ordered, or were added by the dealer. One user can belong to several showrooms. - Guests (
guest_users) gave their details without an account, for example in an enquiry form. A guest belongs to one showroom. If they later sign in with the same email,converted_to_user_idpoints to their new user.
Get one
Section titled “Get one”query Customer($id: uuid!) { users_by_pk(id: $id) { id email first_name last_name phone stage source created_at last_logged_in }}query Guest($id: uuid!) { guest_users_by_pk(id: $id) { id email first_name last_name phone postcode created_at converted_to_user_id }}Customers of one showroom, newest first. Team members are users too, so filter by role.
query Customers($showroomId: uuid!) { users( where: { showroom_users: { showroom_id: { _eq: $showroomId } } role: { _eq: "customer" } } order_by: [{ created_at: desc }, { id: asc }] limit: 50 ) { id email first_name last_name phone created_at }}Guests of one showroom who haven’t created an account:
query Guests($showroomId: uuid!) { guest_users( where: { showroom_id: { _eq: $showroomId }, converted_to_user_id: { _is_null: true } } order_by: [{ created_at: desc }, { id: asc }] limit: 50 ) { id email first_name last_name phone created_at }}Find someone by email in either table:
query FindByEmail($email: String!) { users(where: { email: { _ilike: $email } }) { id email } guest_users(where: { email: { _ilike: $email } }) { id email showroom_id }}A customer’s activity
Section titled “A customer’s activity”query CustomerActivity($id: uuid!) { users_by_pk(id: $id) { email moments(order_by: { created_at: desc }) { id type stage created_at } test_drives(order_by: { scheduled_at: desc }) { id stage scheduled_at } trade_in_plans(order_by: { created_at: desc }) { id make model stage } wish_lists { stocked_vehicle_id } }}The same lists exist on guest_users_by_pk: moments, test_drives and trade_in_plans.