Search.../

createMember( )

Developer Preview

Creates a site member.

Description

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.

This function is not a universal function and runs only on the backend.

Admin Method

This function requires elevated permissions to run. This function is not universal and runs only on the backend.

Syntax

function createMember(member: Member): Promise<CreateMemberResponse>

createMember Parameters

NAME
TYPE
DESCRIPTION
member
Member

Member to create.

Returns

Return Type:

Promise<
CreateMemberResponse
>
NAME
TYPE
DESCRIPTION
member
Member

New member.

Was this helpful?

Create a new member with required parameter values (export from backend code)

Copy Code
1import { members } from 'wix-members.v2';
2import { webMethod, Permissions } from 'wix-web-module';
3import { elevate } from 'wix-auth';
4
5const elevatedCreateMember = elevate(members.createMember);
6
7/* Sample member value:
8 * {
9 * "member": {
10 * "loginEmail": "examplemember@gmail.com",
11 * "privacyStatus": "PUBLIC"
12 * }
13 * }
14 */
15
16export const myCreateMemberFunction = webMethod(
17 Permissions.Anyone,
18 async (member) => {
19 try {
20 const newMember = await elevatedCreateMember(member);
21 console.log('Created new member:', newMember);
22
23 return newMember;
24 } catch (error) {
25 console.error(error);
26 // Handle the error
27 }
28 }
29);
30
31/* Promise resolves to:
32 * {
33 * "_createdDate": "2024-02-29T09:42:31.000Z",
34 * "_id": "29ae2752-73d2-4a07-8cba-677e1928ed52",
35 * "_updatedDate": "2024-02-29T09:42:30.857Z",
36 * "activityStatus": "ACTIVE",
37 * "contact": {
38 * "addresses": [],
39 * "contactId": "29ae2752-73d2-4a07-8cba-677e1928ed52",
40 * "customFields": {},
41 * "emails": [],
42 * "phones": []
43 * },
44 * "loginEmail": "examplemember@gmail.com",
45 * "loginEmailVerified": false,
46 * "privacyStatus": "PUBLIC",
47 * "profile": {},
48 * "status": "APPROVED"
49 * }
50 */
Create a new member with all parameter values (export from backend code)

Copy Code
1import { members } from 'wix-members.v2';
2import { webMethod, Permissions } from 'wix-web-module';
3import { elevate } from 'wix-auth';
4
5const elevatedCreateMember = elevate(members.createMember);
6
7/* Sample member value:
8 * {
9 * "member": {
10 * "contact": {
11 * "email": "jenny.smith@wixmembers.com",
12 * "phone": "555-123-4567",
13 * "address": "789 Member Lane, Townsville, USA",
14 * "birthdate": "1985-07-15",
15 * "company": "Wix Members Inc.",
16 * "emails": [
17 * "jenny.smith@wixmembers.com",
18 * "jenny.smith@wix.com"
19 * ],
20 * "firstName": "Jenny",
21 * "jobTitle": "Community Manager",
22 * "lastName": "Smith",
23 * "phones": [
24 * "555-123-4567",
25 * "555-987-6543"
26 * ],
27 * "addresses": [
28 * {
29 * "addressLine1": "123 Wix Way",
30 * "addressLine2": "Suite 101",
31 * "city": "Wixville",
32 * "country": "US",
33 * "postalCode": "54321",
34 * "subdivision": "CA"
35 * },
36 * {
37 * "addressLine1": "456 Wix Street",
38 * "city": "Wixton",
39 * "country": "US",
40 * "postalCode": "12345",
41 * "subdivision": "NY"
42 * }
43 * ],
44 * "customFields": {
45 * "membership_status": {
46 * "name": "Membership Status",
47 * "value": "Active"
48 * },
49 * "subscription_plan": {
50 * "name": "Subscription Plan",
51 * "value": "Premium"
52 * }
53 * }
54 * },
55 * "loginEmail": "jane.smith@wixmembers.com",
56 * "privacyStatus": "PRIVATE",
57 * "profile": {
58 * "cover": {
59 * "over": {
60 * "_id": "wix_media_cover_789",
61 * "height": 720,
62 * "offsetX": 50,
63 * "offsetY": 20,
64 * "url": "https://wixmembers.com/cover.jpg",
65 * "width": 1280
66 * },
67 * "url": "https://wixmembers.com/cover.jpg",
68 * "offsetX": 50,
69 * "offsetY": 20
70 * },
71 * "photo": {
72 * "_id": "wix_media_photo_456",
73 * "height": 400,
74 * "offsetX": 0,
75 * "offsetY": 0,
76 * "url": "https://wixmembers.com/photo.jpg",
77 * "width": 400
78 * },
79 * "nickname": "JennyS",
80 * "title": "Community Moderator"
81 * }
82 * }
83 * }
84 */
85
86export const myCreateMemberFunction = webMethod(
87 Permissions.Anyone,
88 async (member) => {
89 try {
90 const newMember = await elevatedCreateMember(member);
91 console.log('Created new member:', newMember);
92
93 return newMember;
94 } catch (error) {
95 console.error(error);
96 // Handle the error
97 }
98 }
99);
100
101/* Promise resolves to:
102 * {
103 * "member": {
104 * "_createdDate": "2024-03-01T14:41:09.000Z",
105 * "_id": "44f427a2-d860-4b94-8618-5719be99fccd",
106 * "_updatedDate": "2024-03-01T14:41:08.877Z",
107 * "activityStatus": "ACTIVE",
108 * "contact": {
109 * "addresses": [
110 * {
111 * "_id": "",
112 * "addressLine2": "Suite 101",
113 * "city": "Wixville",
114 * "subdivision": "CA",
115 * "country": "US",
116 * "postalCode": "54321"
117 * },
118 * {
119 * "_id": "",
120 * "city": "Wixton",
121 * "subdivision": "NY",
122 * "country": "US",
123 * "postalCode": "12345"
124 * }
125 * ],
126 * "birthdate": "1985-07-15",
127 * "company": "Wix Members Inc.",
128 * "customFields": {},
129 * "emails": [],
130 * "firstName": "Jenny",
131 * "jobTitle": "Community Manager",
132 * "lastName": "Smith",
133 * "phones": [
134 * "555-123-4567",
135 * "555-987-6543"
136 * ],
137 * "contactId": "44f427a2-d860-4b94-8618-5719be99fccd"
138 * },
139 * "loginEmail": "jane.smith@wixmembers.com",
140 * "loginEmailVerified": false,
141 * "privacyStatus": "PRIVATE",
142 * "profile": {
143 * "cover": {
144 * "_id": "",
145 * "url": "https://wixmembers.com/cover.jpg",
146 * "height": 0,
147 * "width": 0
148 * },
149 * "nickname": "JennyS",
150 * "photo": {
151 * "_id": "wix_media_photo_456",
152 * "url": "//static.wixstatic.com/media/wix_media_photo_456",
153 * "height": 0,
154 * "width": 0
155 * },
156 * "title": "Community Moderator"
157 * },
158 * "status": "APPROVED"
159 * }
160 * }
161 */
Create members from a database

This code imports data from a Wix CMS collection and creates corresponding members using the createMember() API.

Copy Code
1/**************************************
2 * Backend code - createMember.web.js *
3 **************************************/
4import { members } from 'wix-members.v2';
5import { webMethod, Permissions } from 'wix-web-module';
6import { elevate } from 'wix-auth';
7import wixData from 'wix-data';
8
9const elevatedCreateMember = elevate(members.createMember);
10
11export const myCreateMemberFunction = webMethod(
12 Permissions.Anyone,
13 async (member) => {
14 try {
15 const newMember = await elevatedCreateMember(member);
16 console.log('Created new member:', newMember);
17 return newMember;
18 } catch (error) {
19 console.error();
20 // Handle the error
21 }
22 }
23 );
24
25export const importMembersFromCollection = webMethod(
26 Permissions.Anyone,
27 async function (collectionId) {
28 try {
29 let membersToImport = [];
30 let currentPage = await wixData.query(collectionId).limit(1).find();
31 membersToImport = [...membersToImport, ...currentPage.items];
32
33 while (currentPage.hasNext()) {
34 currentPage = await currentPage.next();
35 membersToImport = [...membersToImport, ...currentPage.items];
36 }
37
38 for (const memberToImport of membersToImport) {
39 await myCreateMemberFunction({
40 loginEmail: memberToImport.loginEmail,
41 privacyStatus: memberToImport.privacyStatus
42 });
43 }
44 } catch (error) {
45 console.error("An error occurred:", error);
46 // Handle the error
47 }
48 }
49);
50
51/*************
52 * Page code *
53 *************/
54
55import { importMembersFromCollection } from 'backend/createMember.web.js';
56
57$w.onReady(function () {
58
59 let collectionName = '';
60
61 //This example assumes there is a text input field called `collectionNameInput` on the site page.
62 $w("#collectionNameInput").onInput(event => {
63 collectionName = event.target.value;
64 });
65
66 $w('#ButtonSiteMembersCollection').onClick(async () => {
67 try {
68 await importMembersFromCollection(collectionName);
69 } catch (error) {
70 console.error("An error occurred while handling button click:", error);
71 // Handle the error
72 }
73 });
74 });