Skip to main content

Edit customer info

Edit Information on the customer page changes the customer's business details and its contacts. What can change depends on whether the customer is connected, invited or detached.

Who uses it​

Supplier staff with full access to customers.

How it works​

Business details. Name, EIN/Tax ID, shipping address, billing address (same as shipping unless set apart) and tax documents (upload or remove). A connected customer also shows its Customer Ref ID; a customer with a pending invitation does not. Nothing saves until you press save; cancel or leaving with unsaved changes asks you to confirm.

Contacts. One primary contact and up to five additional contacts. Every contact needs a first name and a phone or an email, and no phone or email may repeat another contact's. The primary contact cannot be deleted; promote another contact to primary and the current one is demoted.

Customer isPrimary contactAdditional contacts
ConnectedFrom the owner. Editing never re-invites or transfers ownershipAllowed
New, invitation pendingEditing a phone or email re-sends the invitation on that channelAllowed
Existing restaurant, invitation pendingFrom the invitation. Notifications still go to the ownerNot allowed
Detached (no invitation)Add or edit freely, no invitation sentAllowed

When a pending invitation is accepted, the customer becomes connected and its business info is unlocked. A failed contact update leaves the existing invitation intact.

Calculations​

None.

Where it shows up​

The edit form, the customer page contact card, and the customer's details on new orders. See Order snapshot.

Permissions​

Customers: full access.

Decisions​

  • Contacts live in one list (a primary plus additional contacts) rather than separate email and phone lists. Old lists were migrated: the owner became the primary contact, each extra email or phone became its own contact up to the five-contact limit, and the old fields were cleared.

Specs​

edit-customer-info.feature
# prefix: ECI
Feature: Edit Customer Information
Supplier edits internal customer information from the customer details view.
Changes apply to the supplier's view only — the customer's original information remains unchanged.

Background:
Given a supplier is viewing a customer's details

Rule: Connected customers show all fields including customer reference ID

Scenario: ECI-001 current information shown for a connected customer
Given the customer is a new restaurant with an auto-accepted invitation
And the supplier and the customer are connected
When the supplier begins editing customer information
Then the current business name is displayed
And the current EIN/Tax ID is displayed
And the customer reference ID is displayed
And the current shipping address is displayed
And the billing address defaults to the shipping address
And any previously uploaded EIN or Tax ID documents are shown
And the primary contact details are displayed as read-only
And any additional contacts are listed as read-only

Rule: Pending invitation customers do not expose customer reference ID

Scenario: ECI-002 current information shown for an existing customer with pending invitation
Given the customer is an existing restaurant with a pending invitation that requires acceptance
And the supplier and the customer are not yet connected
When the supplier begins editing customer information
Then the current business name is displayed
And the business name is read-only
And the current EIN/Tax ID is displayed
And the EIN/Tax ID is read-only
And the customer reference ID is not available
And the current shipping address is displayed
And the shipping address is read-only
And the billing address defaults to the shipping address
And the billing address is read-only
And any previously uploaded EIN or Tax ID documents are shown
And EIN or Tax ID documents cannot be added, replaced, or removed
And the invitation contact details are shown as the primary contact

Rule: Supplier can modify business name, EIN, and reference ID

Scenario: ECI-003 supplier updates business name
Given the supplier is editing customer information
When the supplier changes the business name and saves
Then the customer's business name is updated
And a success confirmation is shown

Scenario: ECI-004 supplier updates EIN/Tax ID
Given the supplier is editing customer information
When the supplier changes the EIN/Tax ID and saves
Then the customer's EIN/Tax ID is updated
And a success confirmation is shown

Scenario: ECI-005 supplier updates customer reference ID for a connected customer
Given the customer is connected to the supplier
And the supplier is editing customer information
When the supplier changes the customer reference ID and saves
Then the customer reference ID is updated
And a success confirmation is shown

Rule: Shipping address is independently editable

Scenario: ECI-006 supplier updates shipping address
Given the supplier is editing customer information
When the supplier modifies the shipping address and saves
Then the customer's shipping address is updated
And a success confirmation is shown

Rule: Billing address defaults to shipping unless explicitly overridden

Scenario: ECI-007 billing address defaults to shipping address
Given the supplier is editing customer information
And the customer has no separate billing address on record
Then the billing address matches the shipping address

Scenario: ECI-008 supplier sets a separate billing address
Given the supplier is editing customer information
When the supplier specifies a billing address different from the shipping address
And the supplier saves
Then the customer's billing address is stored separately from the shipping address
And a success confirmation is shown

Scenario: ECI-009 supplier reverts billing address to match shipping
Given the supplier is editing customer information
And the billing address differs from the shipping address
When the supplier sets the billing address to match the shipping address and saves
Then the billing address matches the shipping address
And a success confirmation is shown

Rule: EIN/Tax documents can be attached and removed

Scenario: ECI-010 supplier uploads an EIN or Tax ID document
Given the supplier is editing customer information
When the supplier attaches a document and saves
Then the document is stored for the customer
And a success confirmation is shown

Scenario: ECI-011 supplier removes an uploaded document
Given the supplier is editing customer information
And the customer has a previously uploaded document
When the supplier removes the document and saves
Then the document is no longer associated with the customer
And a success confirmation is shown

Rule: Changes require explicit save to persist

Scenario: ECI-012 supplier saves all changes successfully
Given the supplier has made valid changes to customer information
When the supplier saves
Then all changes are persisted
And a success confirmation is shown

Scenario: ECI-013 supplier cancels editing with unsaved changes
Given the supplier has unsaved changes to customer information
When the supplier cancels editing
Then the supplier is warned about unsaved changes
And the supplier can choose to leave without saving
Or the supplier can choose to stay and continue editing

Scenario: ECI-013a supplier cancels editing with no changes
Given the supplier has not made any changes to customer information
When the supplier cancels editing
Then the supplier returns to the customer details view without a warning

Rule: Required fields must be provided before saving

Scenario Outline: ECI-014 required information must be provided
Given the supplier is editing customer information
When the supplier clears the <information> and attempts to save
Then a validation error is shown for <information>
And the changes are not saved

Examples:
| information |
| Business Name |
| Shipping Address Line 1 |
| Shipping City |
| Shipping State |
| Shipping Zip |

Rule: Navigating away with unsaved changes requires confirmation

Scenario: ECI-015 supplier is warned when navigating away with unsaved changes
Given the supplier is editing customer information
And the supplier has unsaved changes
When the supplier attempts to navigate away
Then the supplier is warned about unsaved changes
And the supplier can choose to leave without saving
Or the supplier can choose to stay and continue editing

Rule: Contact information is shown on the edit view

Scenario: ECI-016 detached customer shows empty contact state
Given the supplier and the customer are connected
And the customer has no owner
And no invitation exists for the customer
When the supplier begins editing customer information
Then no primary contact is shown
And an option to add a primary contact is available

Scenario: ECI-017 connected customer's primary contact is sourced from the owner
Given the customer has an accepted invitation
And the customer has an owner with first name, last name, phone, and email
When the supplier begins editing customer information
Then the primary contact shows the owner's first name, last name, phone, and email

Scenario: ECI-018 additional contacts are listed alongside the primary contact
Given the customer has an accepted invitation
And the supplier has added additional contacts for this customer
When the supplier begins editing customer information
Then each additional contact is listed with its available details

Rule: Supplier can edit the primary contact

Scenario: ECI-019 supplier edits primary contact for a connected customer
Given the customer has an accepted invitation
And a primary contact exists
When the supplier updates the primary contact's details and confirms
Then the primary contact is updated in the supplier's view
And the underlying customer account is not modified

Scenario: ECI-051 editing primary contact on a connected customer triggers no invitation and no ownership transfer
Given the customer has an accepted invitation
And a primary contact exists
When the supplier updates the primary contact's details and confirms
Then no invitation is created or sent
And no ownership transfer occurs
And the existing connection between the supplier and the customer remains unchanged

Scenario: ECI-020 supplier edits primary contact for a new customer with pending invitation
Given the customer has a pending invitation that does not require acceptance
And a primary contact exists
When the supplier updates the primary contact's phone number and confirms
Then the customer's account is updated with the new phone number
And the customer's business phone number is updated
And the previous invitation is revoked
And a new invitation is sent to the updated contact

Scenario: ECI-021 supplier edits primary contact name only for a new customer with pending invitation
Given the customer has a pending invitation that does not require acceptance
And a primary contact exists
When the supplier updates only the primary contact's name and confirms
Then the customer's account name is updated
And the existing invitation remains active
And no new invitation is sent

Scenario: ECI-022 supplier edits invitation contact for an existing customer with pending invitation
Given the customer has a pending invitation that requires acceptance
When the supplier updates the invitation contact's details and confirms
Then the invitation record is updated with the new contact details
And the previous invitation is revoked
And a new invitation is sent to the existing restaurant's owner
And the invitation is sent to the owner regardless of the contact details entered by the supplier
And the supplier-provided contact details are stored on the invitation record
And if the supplier-provided contact differs from the owner's contact on a given channel, an additional notification is sent to the supplier-provided contact on that channel
And the customer's account is not modified
And the supplier and the customer remain unconnected

Scenario: ECI-053 a failed invitation contact update leaves the existing invitation intact
Given the customer has a pending invitation that requires acceptance
When the supplier updates the invitation contact's details and the update fails
Then the existing invitation remains active
And no replacement invitation is created
And the supplier is shown an error

Scenario: ECI-023 supplier edits primary contact for a detached customer
Given the supplier and the customer are connected
And the customer has no owner
And no invitation exists for the customer
And a primary contact exists
When the supplier updates the primary contact's details and confirms
Then the primary contact is updated in the supplier's view
And no account or invitation changes occur

Scenario: ECI-050 editing primary contact on a detached customer triggers no invitation and no ownership transfer
Given the supplier and the customer are connected
And the customer has no owner
And no invitation exists for the customer
And a primary contact exists
When the supplier updates the primary contact's details and confirms
Then no invitation is created or sent
And no ownership transfer occurs
And the existing connection between the supplier and the customer remains unchanged

Scenario: ECI-024 supplier adds primary contact to a detached customer
Given the supplier and the customer are connected
And the customer has no owner
And no invitation exists for the customer
And no primary contact exists
When the supplier provides a first name and at least a phone number or email and confirms
Then a primary contact is created for this customer in the supplier's view

Rule: All contacts require a first name and at least one of phone number or email

Scenario Outline: ECI-025 contact cannot be saved without required details
Given the supplier is editing a contact
When the supplier leaves <missing> and attempts to confirm
Then a validation error prevents saving
And the contact is not updated

Examples:
| missing |
| the first name empty |
| both the phone number and email empty |

Scenario: ECI-026 primary contact phone or email must not duplicate an existing contact
Given the supplier is editing the primary contact
And an additional contact exists with a certain phone number
When the supplier enters the same phone number for the primary contact and attempts to confirm
Then a validation error indicates the phone number is already in use
And the primary contact is not updated

Scenario: ECI-027 editing primary contact phone or email for new customer is rejected when globally taken
Given the customer has a pending invitation that does not require acceptance
When the supplier changes the primary contact's phone number to one belonging to another user
Then the change is rejected with an error indicating the phone number is already associated with an existing account

Scenario: ECI-052 editing primary contact for an existing customer with pending invitation skips the global duplicate check
Given the customer has a pending invitation that requires acceptance
When the supplier changes the primary contact's phone number or email to one belonging to another user
Then the change is accepted
And no error is shown about the contact being associated with an existing account
And the invitation is still routed to the existing restaurant's owner rather than to the supplier-typed contact

Scenario Outline: ECI-034 contact is valid with a first name and at least one communication channel
Given the supplier is adding or editing a contact
When the supplier provides a first name and <channels> and confirms
Then the contact is saved successfully

Examples:
| channels |
| a phone number only |
| an email only |
| a phone number and email |

Scenario: ECI-036 additional contact phone or email must not duplicate an existing contact
Given the supplier is adding an additional contact
And a contact already exists with a certain email address
When the supplier enters the same email address and attempts to confirm
Then a validation error indicates the email is already in use
And the contact is not added

Rule: Supplier can manage additional contacts for eligible customers

Scenario: ECI-028 supplier adds an additional contact for a connected customer
Given the customer has an accepted invitation
When the supplier adds a new contact with a first name and at least a phone number or email and confirms
Then the new contact is added to the customer's contact list

Scenario: ECI-029 supplier adds an additional contact for a new customer with pending invitation
Given the customer has a pending invitation that does not require acceptance
When the supplier adds a new contact with a first name and at least a phone number or email and confirms
Then the new contact is added to the customer's contact list

Scenario: ECI-030 additional contacts are not allowed for existing customer with pending invitation
Given the customer has a pending invitation that requires acceptance
When the supplier attempts to add an additional contact
Then the option to add additional contacts is not available

Scenario: ECI-031 supplier edits an additional contact
Given the customer has additional contacts
When the supplier updates an additional contact's details and confirms
Then the additional contact is updated

Scenario: ECI-032 supplier removes an additional contact
Given the customer has additional contacts
When the supplier removes an additional contact and confirms
Then the contact is removed from the customer's contact list

Scenario: ECI-033 additional contacts are limited to five
Given the customer already has five additional contacts
When the supplier attempts to add another additional contact
Then the supplier is informed that the maximum number of contacts has been reached
And no new contact is added

Rule: Promoting a contact to primary demotes the current primary

Scenario: ECI-037 supplier promotes an additional contact to primary for a connected customer
Given the customer has an accepted invitation
And the customer has a primary contact and additional contacts
When the supplier marks an additional contact as primary and confirms
Then the selected contact becomes the primary contact
And the previous primary contact becomes an additional contact
And no account or invitation changes occur

Scenario: ECI-038 supplier promotes an additional contact to primary for new customer with pending invitation
Given the customer has a pending invitation that does not require acceptance
And the customer has a primary contact and additional contacts
When the supplier marks an additional contact as primary and confirms
Then the selected contact becomes the primary contact
And the previous primary contact becomes an additional contact
And the customer's account is updated to match the new primary contact
And the previous invitation is revoked
And a new invitation is sent to the new primary contact

Scenario: ECI-039 new contact marked as primary during creation
Given the customer has an existing primary contact
When the supplier adds a new contact and marks it as primary and confirms
Then the new contact becomes the primary contact
And the previous primary contact becomes an additional contact

Rule: Primary contact cannot be deleted directly

Scenario: ECI-045 primary contact cannot be deleted
Given the customer has a primary contact
When the supplier views the primary contact in edit mode
Then no delete action is available for the primary contact
And the primary contact can only be replaced by promoting another contact to primary

Rule: Existing customer's contact details are sourced from the invitation

Scenario: ECI-043 supplier edits invitation contact name only for an existing customer
Given the customer has a pending invitation that requires acceptance
When the supplier updates only the invitation contact's name and confirms
Then the invitation contact name is updated
And the existing invitation remains active
And no new invitation is sent

Scenario: ECI-044 existing customer's contact details are sourced from the invitation
Given the customer has a pending invitation that requires acceptance
And the invitation includes a contact name, phone, and email
When the supplier begins editing customer information
Then the primary contact shows the invitation's contact name, phone, and email
And the contact is identified as a pending invitation contact

Rule: Invitation notifications for new-customer invitations are sent based on which contact detail changed

Scenario: ECI-040 email change triggers email invitation for a new-customer invitation
Given the customer has a pending invitation that does not require acceptance
When the supplier changes the primary contact's email
Then an invitation is sent via email to the new address

Scenario: ECI-041 phone change triggers SMS invitation for a new-customer invitation
Given the customer has a pending invitation that does not require acceptance
When the supplier changes the primary contact's phone number
Then an invitation is sent via SMS to the new number

Scenario: ECI-042 both email and phone change triggers both notifications for a new-customer invitation
Given the customer has a pending invitation that does not require acceptance
When the supplier changes both the primary contact's email and phone number
Then an invitation is sent via email to the new address
And an invitation is sent via SMS to the new number

Rule: Invitation notifications for existing-restaurant invitations always go to the owner

Scenario: ECI-046 existing-restaurant invitation notifications ignore the supplier-typed contact
Given the customer has a pending invitation that requires acceptance
When the supplier changes any combination of the invitation contact's name, phone, or email
Then the new invitation is sent to the existing restaurant's owner
And the invitation is not sent to the supplier-typed contact
And channel selection (email, SMS, or both) is based on the owner's available contact methods, not the fields the supplier changed

Rule: Acceptance of a connection request transitions the customer to a connected state

Scenario: ECI-047 existing-restaurant invitation acceptance establishes the link and unlocks business info
Given the customer had a pending invitation that requires acceptance
When the existing restaurant accepts the connection request
Then the supplier and the customer become connected
And the business name becomes editable
And the EIN/Tax ID becomes editable
And the shipping and billing addresses become editable
And EIN or Tax ID documents can be added, replaced, or removed
And the customer reference ID becomes available

Scenario: ECI-048 new-customer invitation acceptance transitions the customer from pending to connected
Given the customer had a pending invitation that does not require acceptance
When the invitee signs up and accepts the invitation
Then the customer's status changes from pending to connected
And the supplier and the customer become connected
And the supplier's view reflects the connected state

Rule: Customers without invitations allow full business-info editing

Scenario: ECI-049 detached customer allows full business-info editing
Given the supplier and the customer are connected
And the customer has no owner
And no invitation exists for the customer
When the supplier begins editing customer information
Then the business name is editable
And the EIN/Tax ID is editable
And the shipping address is editable
And the billing address is editable
And the customer reference ID is editable
And EIN or Tax ID documents can be added, replaced, or removed
customer-contact-migration.feature
# prefix: CCM
Feature: Customer Contact Data Migration
Admin migrates existing customer contact data from separate email and phone lists
into unified contact records.

Rule: Migration populates primary contact from the customer's owner

Scenario: CCM-001 customer with an owner is migrated with owner details as primary contact
Given a customer has an owner with first name, last name, email, and phone number
When the admin runs the contact migration
Then the primary contact is populated with the owner's details

Scenario: CCM-002 customer without an owner is migrated with no primary contact
Given a customer has no owner associated
When the admin runs the contact migration
Then no primary contact is set for the customer

Rule: Migration converts existing separate contacts into unified additional contacts

Scenario: CCM-003 additional emails are migrated as individual contacts
Given a customer has additional email entries
When the admin runs the contact migration
Then each email becomes a separate additional contact with only an email

Scenario: CCM-004 additional phone numbers are migrated as individual contacts
Given a customer has additional phone number entries
When the admin runs the contact migration
Then each phone number becomes a separate additional contact with only a phone number

Scenario: CCM-005 migration respects the five-contact limit
Given a customer has more than five combined additional emails and phone numbers
When the admin runs the contact migration
Then only the first five additional contacts (by array insertion order) are migrated
And the remainder are logged for manual review

Rule: Migration supports dry run mode

Scenario: CCM-006 dry run reports changes without persisting
Given the admin runs the contact migration in dry run mode
When the migration completes
Then a summary of planned changes is returned
And no data is modified

Scenario: CCM-007 migration can be scoped to a single supplier
Given the admin specifies a supplier to migrate
When the migration runs
Then only customers linked to that supplier are processed

Rule: Old contact fields are removed after migration

Scenario: CCM-008 separate email and phone lists are cleared after successful migration
Given a customer has been successfully migrated
Then the separate email list and phone number list are no longer present on the relationship

Known limitations​

  • Editing the name or addresses of a connected customer changes the restaurant's own record. See Customer info.

FAQ​

Why can't I add more contacts? The limit is five additional contacts, and none are allowed for an existing restaurant with a pending invitation.

I changed the email and the customer got an invitation. That is expected for a new customer with a pending invitation. Connected customers are never re-invited.