Skip to main content
This reference lists every workflow that writes Seller module data. Import them from @mercurjs/core/workflows and run them against the Medusa container: await workflow(container).run({ input }). Workflows roll back their completed steps when a later step fails.
Workflows that take additional_data pass it to their hooks. Register a hook handler with workflow.hooks.<hookName>(handler).

createSellersWorkflow

Creates one or more stores, links each to the default region plus region_ids, and invites one member per store with role_seller_administration. Returns SellerDTO[].
  • Hooks: validate ({ input }), sellersCreated ({ sellers, additional_data })
  • Events: seller.created per store, member_invite.created per invite

createSellerAccountWorkflow

Creates one store in pending_approval and adds a member as its owner with role_seller_administration. Returns SellerDTO.
  • Hooks: validate ({ input }), sellerAccountCreated ({ seller, member_id, additional_data })
  • Events: seller.created

updateSellersWorkflow

Updates every store that matches selector with the same update. Returns SellerDTO[].
  • Hooks: sellersUpdated ({ sellers, additional_data })
  • Events: seller.updated per store

deleteSellersWorkflow

Soft deletes stores by id. Compensation restores them.
  • Hooks: none
  • Events: seller.deleted per store

approveSellerWorkflow

Moves a pending_approval store to open, clears status_reason, and sets approved_at if it’s empty.
  • Hooks: sellerApproved ({ seller_id, additional_data })
  • Events: seller.approved

suspendSellerWorkflow

Moves a pending_approval or open store to suspended, saves reason in status_reason, and sets rejected_at if it’s empty.
  • Hooks: sellerSuspended ({ seller_id, additional_data })
  • Events: seller.suspended

unsuspendSellerWorkflow

Moves a suspended store to open and clears status_reason.
  • Hooks: sellerUnsuspended ({ seller_id, additional_data })
  • Events: seller.unsuspended

terminateSellerWorkflow

Moves a pending_approval or suspended store to terminated and saves reason in status_reason. Fails for an open store.
  • Hooks: sellerTerminated ({ seller_id, additional_data })
  • Events: seller.terminated

unterminateSellerWorkflow

Moves a terminated store to suspended and clears status_reason.
  • Hooks: sellerUnterminated ({ seller_id, additional_data })
  • Events: seller.unterminated

linkSellerRegionsWorkflow

Adds and removes store region links in one run. Fails if a region or seller doesn’t exist, or if a store would be left with no region.
  • Hooks: none
  • Events: none

updateSellerAddressWorkflow

Creates or updates a store’s SellerAddress. Returns SellerAddressDTO.
  • Hooks: addressUpdated ({ address, additional_data })
  • Events: none

updateSellerProfessionalDetailsWorkflow

Creates or updates a store’s ProfessionalDetails. Returns ProfessionalDetailsDTO.
  • Hooks: professionalDetailsUpdated ({ professional_details, additional_data })
  • Events: none

deleteSellerProfessionalDetailsWorkflow

Deletes a store’s ProfessionalDetails, if it has any.
  • Hooks: professionalDetailsDeleted ({ seller_id, additional_data })
  • Events: none

updateSellerPaymentDetailsWorkflow

Creates or updates a store’s PaymentDetails. Returns PaymentDetailsDTO.
  • Hooks: paymentDetailsUpdated ({ payment_details, additional_data })
  • Events: none

inviteSellerWorkflow

Sends an email that invites someone to register a new store. It creates a notification with the template newSellerInvitation on the email channel, and writes no Seller module records.
  • Hooks: none
  • Events: none

createMemberInvitesWorkflow

Creates team invites with signed tokens. Fails if an email already belongs to the store. Returns MemberInviteDTO[]. The input is an array of invites, not an object.
  • Hooks: none
  • Events: member_invite.created per invite

resendMemberInviteWorkflow

Deletes an invite and creates a replacement with the same email and role, a new token, and a new expiry. Returns MemberInviteDTO[].
  • Hooks: none
  • Events: member_invite.created

deleteMemberInviteWorkflow

Deletes an invite.
  • Hooks: none
  • Events: none

acceptMemberInviteWorkflow

Validates an invite token, upserts the member by email, creates the membership with the invite’s role, and deletes the invite. The member becomes owner when the store has no owner yet. Returns MemberDTO.
  • Hooks: validate ({ input, invite }), memberInviteAccepted ({ member, invite, additional_data })
  • Events: member_invite.accepted

addSellerMemberWorkflow

Adds an existing member to a store. Returns the SellerMember.
  • Hooks: none
  • Events: seller_member.created

updateMemberRoleWorkflow

Changes the role on a membership. Fails for the owner membership.
  • Hooks: none
  • Events: seller_member.updated

removeSellerMemberWorkflow

Deletes a membership and keeps the Member record. Fails for the owner membership.
  • Hooks: none
  • Events: seller_member.deleted

updateMemberWorkflow

Updates the profile of every member that matches selector. Returns MemberDTO[].
  • Hooks: membersUpdated ({ members, additional_data })
  • Events: none