> For the complete documentation index, see [llms.txt](https://help.memberply.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.memberply.com/members-area/import-members.md).

# Import members

Import up to 500 members into a membership tier using a CSV file. To add one person, use [Add a single member](/members-area/add-a-member.md).

1. Open **Members > Import Members**.
2. Enter the notification email address and select the destination membership product.
3. Optionally select **Send welcome email to active imported members**. This applies when adding a member to the selected tier for the first time. Updating an existing membership does not resend its welcome email or issue joining credits again.
4. Optionally select **Send payment setup email**. This is off by default and sends a separate email for new active recurring memberships without a Shopify subscription. Completing checkout may charge immediately, so choose this when members are ready to move their payments.
5. Download the CSV template from the import dialog, fill in your member details, then upload the CSV and select **Import**.

The column headings are case-insensitive. Include an `EmailAddress` column. Other supported columns are `MemberNumber`, `FirstName`, `LastName`, `Active`, `DateJoined`, `PhoneNumber`, `Address1`, `Address2`, `City`, `ProvinceCode`, `CountryCode`, `Zip`, and `Company`.

* `MemberNumber`: The member's reference from your previous system, up to 100 characters. Numbers are text, so leading zeros are preserved. Format this column as **Text** in your spreadsheet before entering or opening numbers.
* `EmailAddress`: Required for new members. Leave the cell blank to preserve the email when a supplied member number identifies an existing member.
* `FirstName` and `LastName`: Optional profile details.
* `Active`: Use `yes` or `no`. A blank cell preserves the existing status; a new membership defaults to active.
* `DateJoined`: Use an unambiguous date such as `2025-09-01`. A blank cell preserves the existing joined date; a new membership starts today.

## Phone numbers and addresses

* `PhoneNumber`: Optional international phone number, including the country calling code, for example `+61412345678`. This updates the Shopify customer phone and the Memberply member phone.
* `Address1` and `Address2`: Street address and optional apartment, suite, or unit.
* `City`, `ProvinceCode`, `CountryCode`, and `Zip`: City, state or province code (for example `WA`), two-letter country code (for example `AU`), and postal code.
* `Company`: Optional company name for the address.

Format phone numbers and postal codes as **Text** in your spreadsheet to preserve plus signs and leading zeros. Country and province codes are converted to uppercase. Shopify validates phone numbers and address details.

Address fields update the customer's default Shopify address, or create a default address if none exists. Other saved addresses are preserved. Blank cells do not clear existing address fields. When address fields are supplied, filled first name, last name, and phone cells also update that address's recipient details. A phone-only import does not change address phone fields.

Addresses are saved in Shopify. This does not change billing addresses on existing subscription contracts or orders. If an address update fails after the customer profile was saved, the row is marked `partial`; review the result before retrying.

```csv
EmailAddress,PhoneNumber,Address1,Address2,City,ProvinceCode,CountryCode,Zip,Company
jane@example.com,+61412345678,123 Example Street,Unit 2,Perth,WA,AU,6000,Example Company
```

## How existing members are matched

Memberply first looks for an existing member with the supplied member number. If the number does not identify a member, it uses the email address only when that address belongs to exactly one member in your store.

* If the number matches and the email differs, the supplied email replaces the current address only after Shopify accepts the update to that same customer.
* If a unique email matches a member without a number, Memberply assigns the supplied number.
* If the email matches a member who already has a different number, the row is rejected. Leave `MemberNumber` blank or enter their current number.
* If the number and email identify different members, the row is rejected.
* If neither identifies an existing member, Memberply uses the matching Shopify customer or creates one and adds the membership.

Numbers are unique within your store. Matching ignores surrounding spaces and letter case. Memberply keeps the imported spelling for display. These references are separate from Memberply's internal IDs and are not generated automatically.

Filled cells replace supported details; blank cells preserve existing values. Imports cannot change an existing member number. Contact support if a number was assigned incorrectly.

## Conflicts and results

Before making changes, Memberply checks the entire file for duplicate numbers, duplicate email addresses, ambiguous email matches, and multiple rows identifying the same member or Shopify customer. All conflicting rows are rejected, including the first occurrence. Other valid rows can still be processed.

The import also checks that an email belongs to the expected Shopify customer. A Shopify rejection prevents that row from changing the member's local profile.

While an import runs, its status appears on **Members**. After it finishes, select **Download import results** to get a CSV containing the row number, email, member number, status, and any error:

* `created`: A new member record was created.
* `updated`: An existing member or their selected membership was updated.
* `unchanged`: The supplied details already matched.
* `rejected`: Validation or Shopify rejected the row before its local details were updated.
* `partial`: Processing started, but a later step failed. Review the member and Shopify customer before retrying.

If Shopify times out while creating or updating the customer, Memberply checks up to three times whether the supplied profile details were saved. An existing customer's update can be retried up to twice after a check confirms the details still differ. An uncertain customer creation is never repeated automatically. This recovery may make the operation take longer. If the changes still cannot be confirmed, processing stops for that member with a message to review the Shopify customer before retrying. The membership is not saved by that row, though Shopify may already have changed the customer.

Membership tags and metafields sync to Shopify in the background after the local membership is saved. A temporary tag or metafield failure does not fail the import row or prevent welcome emails and joining credits from being processed. The Members list shows **Shopify benefits syncing** while automatic retries are active and refreshes automatically. Some checkout benefits and Shopify automations that depend on membership tags may be unavailable until syncing finishes. Memberply retries with the latest status and tier without resending welcome emails or issuing joining credits again. Do not re-import a row just because its Shopify benefits are still syncing.

After the initial attempt and up to eight automatic retries over roughly an hour, an unsuccessful sync changes to **Shopify sync needs attention**. Permissions or invalid-value errors may stop sooner. Resolve the issue, then select **Retry sync** beneath the member's badge on **Members**. This queues a new sync without repeating the import. See [retrying a stopped Shopify sync](/members-area/add-a-member.md).

A failed import can contain successful rows. Fix and re-import only the rows that need attention. The notification email also summarizes errors.

Member numbers appear in the member list and member details. You can search by number and include it in **Export Members**. Number assignments record their import time and batch reference for support.

## Track members awaiting a Shopify subscription

On **Members**, select **Imported, awaiting Shopify subscription** to see members with at least one active imported recurring tier that has no recorded Shopify subscription contract. The badge appears alongside the member's existing access status, so an imported member can still be active and receive benefits while awaiting a subscription.

Free, one-time, and inactive memberships are excluded. Members with a recorded contract for that tier, including a paused or cancelled contract, are not treated as awaiting their first subscription. If a member has several tiers, they remain in this filter while any tier qualifies, even if another tier already has a subscription.

The badge clears automatically once Memberply records the Shopify subscription or checkout activation for that tier. Use **Export Members** while this filter is selected to download the matching members, including their legacy numbers and the `awaitingshopifysubscription` column. The filter is a follow-up list, not proof of successful payment, and does not cancel direct debits in your old system. Check the Shopify subscription and payment before changing the old billing arrangement.

## Payment reminders and access deadlines

Importing an active recurring membership grants benefits without creating a Shopify subscription. Monthly tiers initially receive a payment due date one month after import; yearly tiers receive a date one year after import. These dates do not copy the payment schedule from your previous provider.

Memberply sends reminders seven days and one day before the recorded payment date. Each reminder has a **Continue your membership** link. The member signs in with the same Shopify customer email used for their imported membership. This works with both new and legacy Shopify customer accounts.

The link checks the member's current status each time it is opened:

* An active Shopify subscription shows confirmation without asking for another purchase.
* An approved application opens its authorized payment options.
* A pending application shows its review status without asking the member to apply again.
* A request for more information asks the member to respond to the store.
* A member who has not applied can complete the published application form directly on the page.
* During open enrollment, or when the tier does not require approval, the member can choose a payment option directly.
* Rejected applications and approvals that need review direct the member to contact the store.

Waiting for application approval does not extend access. Unpaid imported memberships become eligible for deactivation at their recorded payment due time. The expiry job runs hourly and catches overdue records after missed runs. A merchant-set access extension is still respected, and active Shopify subscriptions are not cancelled by this job. The previous automatic three-day grace period no longer applies.

An application approval is not a payment. Members must complete Shopify checkout to establish their subscription. Existing direct debits elsewhere are not visible to Memberply and are not cancelled by import or expiry. Confirm the new payment and subscription before cancelling the previous arrangement.

## Send payment setup emails when you are ready

Select **Send payment setup email** during import to invite newly added active recurring memberships to set up payments immediately. This is separate from the welcome email, and both options are off by default. Selecting both sends two emails. Updating or re-importing an existing membership does not resend either email.

To send the invitation later, open **Members**, select **Imported, awaiting Shopify subscription**, and choose **Send payment setup email** on the member's row. Confirm the recipient before sending. If the member has several eligible tiers, they receive a separate email for each tier. This action can also resend an invitation if needed.

Only active imported monthly, yearly, or combined monthly/yearly memberships on enabled tiers are eligible. Free, one-time, inactive memberships and tiers with any recorded Shopify subscription (including paused or cancelled subscriptions) are skipped. The recipient is taken from the member's current record in your store.

The email has one **Continue your membership** link and the recorded access deadline when available. It uses the same sign-in, application, approval status and payment flow as the reminders described above. Sending it does not extend access or bypass approval. The seven-day and one-day reminders still run independently.

Completing Shopify checkout may charge the member immediately. Coordinate the transfer with their existing direct debit to avoid overlapping payments. Confirm the new subscription and payment before cancelling the old arrangement.

If a payment setup email fails during import, the import results report a partial result. The member remains imported. Review the result and send the email from **Members** instead of importing them again.

## Edit payment setup and reminder emails

Imported and manually added members use built-in emails by default. Sending remains available without customization approval. The import welcome and payment setup checkboxes still decide whether to send those invitations, and the reminder schedule is unchanged.

Open **Store setup > Emails**, choose the membership tier, and select **Edit** on the following emails when customization is enabled for your store:

* **Imported member welcome**, used when you choose to welcome a newly imported or manually added active member. This is available for all tier types.
* **Payment setup invitation**, used by the import checkbox and the send action on Members for recurring tiers.
* **Imported member payment reminders**, shared by the reminders sent 7 days and 1 day before the recorded payment date for recurring tiers.

Contact Memberply support to request customization approval for your store. Until approval is granted, these email cards and the invitation-editing tip in the import dialog are hidden. Previously saved custom wording is preserved but is not sent without active approval.

After approval, you can edit the subject, message above the button, and closing message. These fields use plain text with line breaks. Memberply adds the member's greeting automatically and uses a fixed **Memberply membership notifications** sender name. Previewing does not save or send an email. Select **Save email** to apply your changes. **Reset to default** loads the built-in wording; save to apply it.

The sign-in and payment buttons, destination links, and applicable payment deadlines are managed by Memberply. They cannot be edited or removed. If support revokes customization approval, future emails return to the built-in wording.

The imported welcome template is separate from the visual welcome template used after a Shopify purchase. Existing purchase welcome content is not copied to imported-member emails. These templates are also separate from the editable 14-day, 7-day and 1-day renewal reminders for one-time membership tiers with an expiry date.

Editing these templates does not send an invitation, resend previous emails, or change the reminder schedule. Store sending restrictions remain in force even if customization is approved.

## Example

```csv
FirstName,LastName,EmailAddress,Active,DateJoined,MemberNumber
John,Smith,john@example.com,yes,2025-09-01,001245
Jane,Doe,jane@example.com,no,2025-10-15,ART-938
```

To assign numbers to existing members while keeping their other details:

```csv
EmailAddress,MemberNumber
john@example.com,001245
jane@example.com,ART-938
```

Importing membership records does not transfer payment mandates or cancel direct debits in your previous system.
