> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # Method name: createMember(options: CreateMemberOptions) # Method package: wixMembersV2 # Method menu location: wixMembersV2 --> members --> createMember # Method Link: https://dev.wix.com/docs/velo/apis/wix-members-v2/members/create-member.md # Method Description: Creates a site member. After creation, you can use the `sendSetPasswordEmail()` function in the Members Authentication API to email the member with a link to set their password. The member can log in to the site once they set their password for the first time. > **Note:** > When creating multiple members, set your requests at least 1 second apart to keep below rate limits. # Method Code Examples: *** Note: do not assume any prop names or enum values other than the ones in the example. ## Create a new member with required parameter values (export from backend code) ```javascript import { members } from 'wix-members.v2'; import { webMethod, Permissions } from 'wix-web-module'; import { elevate } from 'wix-auth'; const elevatedCreateMember = elevate(members.createMember); /* Sample member value: * { * "member": { * "loginEmail": "examplemember@gmail.com", * "privacyStatus": "PUBLIC" * } * } */ export const myCreateMemberFunction = webMethod( Permissions.Anyone, async (member) => { try { const newMember = await elevatedCreateMember(member); console.log('Created new member:', newMember); return newMember; } catch (error) { console.error(error); // Handle the error } } ); /* Promise resolves to: * { * "_createdDate": "2024-02-29T09:42:31.000Z", * "_id": "29ae2752-73d2-4a07-8cba-677e1928ed52", * "_updatedDate": "2024-02-29T09:42:30.857Z", * "activityStatus": "ACTIVE", * "contact": { * "addresses": [], * "contactId": "29ae2752-73d2-4a07-8cba-677e1928ed52", * "customFields": {}, * "emails": [], * "phones": [] * }, * "loginEmail": "examplemember@gmail.com", * "loginEmailVerified": false, * "privacyStatus": "PUBLIC", * "profile": {}, * "status": "APPROVED" * } */ ``` ## Create a new member with all parameter values (export from backend code) ```javascript import { members } from 'wix-members.v2'; import { webMethod, Permissions } from 'wix-web-module'; import { elevate } from 'wix-auth'; const elevatedCreateMember = elevate(members.createMember); /* Sample member value: * { * "member": { * "contact": { * "email": "jenny.smith@wixmembers.com", * "phone": "555-123-4567", * "address": "789 Member Lane, Townsville, USA", * "birthdate": "1985-07-15", * "company": "Wix Members Inc.", * "emails": [ * "jenny.smith@wixmembers.com", * "jenny.smith@wix.com" * ], * "firstName": "Jenny", * "jobTitle": "Community Manager", * "lastName": "Smith", * "phones": [ * "555-123-4567", * "555-987-6543" * ], * "addresses": [ * { * "addressLine1": "123 Wix Way", * "addressLine2": "Suite 101", * "city": "Wixville", * "country": "US", * "postalCode": "54321", * "subdivision": "CA" * }, * { * "addressLine1": "456 Wix Street", * "city": "Wixton", * "country": "US", * "postalCode": "12345", * "subdivision": "NY" * } * ], * "customFields": { * "membership_status": { * "name": "Membership Status", * "value": "Active" * }, * "subscription_plan": { * "name": "Subscription Plan", * "value": "Premium" * } * } * }, * "loginEmail": "jane.smith@wixmembers.com", * "privacyStatus": "PRIVATE", * "profile": { * "cover": { * "over": { * "_id": "wix_media_cover_789", * "height": 720, * "offsetX": 50, * "offsetY": 20, * "url": "https://wixmembers.com/cover.jpg", * "width": 1280 * }, * "url": "https://wixmembers.com/cover.jpg", * "offsetX": 50, * "offsetY": 20 * }, * "photo": { * "_id": "wix_media_photo_456", * "height": 400, * "offsetX": 0, * "offsetY": 0, * "url": "https://wixmembers.com/photo.jpg", * "width": 400 * }, * "nickname": "JennyS", * "title": "Community Moderator" * } * } * } */ export const myCreateMemberFunction = webMethod( Permissions.Anyone, async (member) => { try { const newMember = await elevatedCreateMember(member); console.log('Created new member:', newMember); return newMember; } catch (error) { console.error(error); // Handle the error } } ); /* Promise resolves to: * { * "member": { * "_createdDate": "2024-03-01T14:41:09.000Z", * "_id": "44f427a2-d860-4b94-8618-5719be99fccd", * "_updatedDate": "2024-03-01T14:41:08.877Z", * "activityStatus": "ACTIVE", * "contact": { * "addresses": [ * { * "_id": "", * "addressLine2": "Suite 101", * "city": "Wixville", * "subdivision": "CA", * "country": "US", * "postalCode": "54321" * }, * { * "_id": "", * "city": "Wixton", * "subdivision": "NY", * "country": "US", * "postalCode": "12345" * } * ], * "birthdate": "1985-07-15", * "company": "Wix Members Inc.", * "customFields": {}, * "emails": [], * "firstName": "Jenny", * "jobTitle": "Community Manager", * "lastName": "Smith", * "phones": [ * "555-123-4567", * "555-987-6543" * ], * "contactId": "44f427a2-d860-4b94-8618-5719be99fccd" * }, * "loginEmail": "jane.smith@wixmembers.com", * "loginEmailVerified": false, * "privacyStatus": "PRIVATE", * "profile": { * "cover": { * "_id": "", * "url": "https://wixmembers.com/cover.jpg", * "height": 0, * "width": 0 * }, * "nickname": "JennyS", * "photo": { * "_id": "wix_media_photo_456", * "url": "//static.wixstatic.com/media/wix_media_photo_456", * "height": 0, * "width": 0 * }, * "title": "Community Moderator" * }, * "status": "APPROVED" * } * } */ ``` ## Create members from a database ```javascript /************************************** * Backend code - createMember.web.js * **************************************/ import { members } from 'wix-members.v2'; import { webMethod, Permissions } from 'wix-web-module'; import { elevate } from 'wix-auth'; import wixData from 'wix-data'; const elevatedCreateMember = elevate(members.createMember); export const myCreateMemberFunction = webMethod( Permissions.Anyone, async (member) => { try { const newMember = await elevatedCreateMember(member); console.log('Created new member:', newMember); return newMember; } catch (error) { console.error(); // Handle the error } } ); export const importMembersFromCollection = webMethod( Permissions.Anyone, async function (collectionId) { try { let membersToImport = []; let currentPage = await wixData.query(collectionId).limit(1).find(); membersToImport = [...membersToImport, ...currentPage.items]; while (currentPage.hasNext()) { currentPage = await currentPage.next(); membersToImport = [...membersToImport, ...currentPage.items]; } for (const memberToImport of membersToImport) { await myCreateMemberFunction({ loginEmail: memberToImport.loginEmail, privacyStatus: memberToImport.privacyStatus }); } } catch (error) { console.error("An error occurred:", error); // Handle the error } } ); /************* * Page code * *************/ import { importMembersFromCollection } from 'backend/createMember.web.js'; $w.onReady(function () { let collectionName = ''; //This example assumes there is a text input field called `collectionNameInput` on the site page. $w("#collectionNameInput").onInput(event => { collectionName = event.target.value; }); $w('#ButtonSiteMembersCollection').onClick(async () => { try { await importMembersFromCollection(collectionName); } catch (error) { console.error("An error occurred while handling button click:", error); // Handle the error } }); }); ``` ---