Importing members and points

Prasant Rai

Written by Prasant Rai
Updated

On this page

RewardsWP’s import tool lets you bring in members and point balances from a CSV file. Whether you’re migrating from another loyalty plugin, onboarding an existing customer list, or applying a bulk points credit, the three-step import workflow handles the heavy lifting. After reading this guide, you’ll know how to prepare your CSV, map columns, process the import, and troubleshoot any errors.

Before you begin

The import tool is available on all RewardsWP plans. To access it, navigate to RewardsWP » Tools in your WordPress admin. The Import tab is selected by default.

Before you start, make sure you have:

  • A CSV file with your member and points data. If you don’t have one yet, you’ll download a template in the next step.
  • At least one identifier per row so RewardsWP knows which member to credit. Valid identifiers are member_id, user_id, or email.
  • A points value per row. The points column is required for every import.

Download the template and prepare your CSV

Click the Download example CSV button on the Import tab to get a pre-formatted CSV file. The downloaded file is named rewardswp-points-import-template-{DATE}.csv (where {DATE} is today’s date) and includes all 16 available columns as headers.

Available columns

ColumnRequiredDescription
member_idConditionalThe RewardsWP member ID. Use this when updating existing members.
user_idConditionalThe WordPress user ID. Links the member to an existing WordPress account, or creates a new member if no match is found.
emailConditionalThe member’s email address. Matches an existing member by email, or creates a new one.
first_nameNoThe member’s first name. Recommended for new members.
last_nameNoThe member’s last name. Recommended for new members.
referral_codeNoA custom referral code for the member.
statusNoThe member’s status (e.g., active, excluded).
pointsYesThe number of points to add. Each row creates a separate point entry.
typeNoThe point transaction type.
source_typeNoWhere the points came from (e.g., purchase, manual).
source_idNoAn ID linking the points to a specific source (e.g., an order ID).
status_pointsNoThe status of the point entry (e.g., approved, pending).
created_atNoThe date the point entry was created. Recommended for historical imports.
expires_atNoWhen the points expire.
note_publicNoA note visible to the member in their activity log. Recommended for clarity.
note_internalNoAn admin-only note. Not visible to members.

At least one identifier column (member_id, user_id, or email) must be present alongside the required points column. You can include any combination of the optional columns.

Preparing your data

Open the template in a spreadsheet application and fill in your data. A few tips:

  • One row per point entry. If you need to give a member 500 points as a single balance, use one row with points set to 500. If you want to import their full history with multiple transactions, use one row per transaction.
  • Use consistent identifiers. Pick one identifier type (email is usually the easiest) and use it consistently across all rows.
  • Date format. Use YYYY-MM-DD or YYYY-MM-DD HH:MM:SS for the created_at and expires_at columns.
  • Save as CSV. Make sure your spreadsheet exports as a standard .csv file (comma-separated values), not .xlsx or .xls.

Upload and map columns

Back on the Import tab, upload your CSV file using the file picker or drag-and-drop area. RewardsWP validates the file (CSV format required) and reads the column headers.

Column mapping

After the upload, a column mapping interface appears. RewardsWP auto-detects which CSV columns correspond to which import fields using the column headers. Each mapping shows a confidence level:

ConfidenceWhat it means
ConfidentThe column header is an exact or near-exact match. No action needed.
ModerateThe header is a partial match. Review the mapping to confirm it’s correct.
LowRewardsWP couldn’t confidently match this column. You’ll need to map it manually using the dropdown.

Review each mapping and use the dropdown menus to correct any that were mismatched. Unmapped columns are skipped during import.

Preview your data

After mapping, a preview modal shows a sample of your data with the mappings applied. Review the preview to confirm that values landed in the right columns before proceeding.

Review and process the import

Once you’re satisfied with the column mapping and preview, click the button to start the import. RewardsWP processes the file in batches of 50 records per request, so you’ll see a progress indicator tracking the count as it works through your file.

How RewardsWP handles each row

The import logic depends on which identifier you’ve provided:

Identifier providedWhat happens
member_idUpdates the existing member with that ID. If no member is found, the row is skipped and logged as an error.
user_idLooks for a member linked to that WordPress user. If found, updates that member. If not found, creates a new member linked to the user.
emailLooks for a member with that email address. If found, updates that member. If not found, creates a new member with that email.

When multiple identifiers are present on a single row, member_id takes priority, followed by user_id, then email.

Each row in the CSV creates a separate point entry in the member’s history. If a row includes optional fields like first_name, last_name, or referral_code, those values are applied to the member record as well.

After the import

When the import finishes, you’ll see a summary showing the total records processed, the number of successes, and the number of failures.

If any rows failed, click Download Error Report to get a CSV file listing each failed row with the reason it was skipped. Common reasons include:

  • Missing required points column value
  • No valid identifier (member_id, user_id, or email) in the row
  • member_id doesn’t match any existing member
  • Invalid date format in created_at or expires_at

You can fix the issues in the error report CSV and re-import just the failed rows.

After a successful import, navigate to RewardsWP » Members to verify that your imported members and point balances appear correctly.

Frequently asked questions

Yes. Export your data from the other plugin as a CSV, then reformat the columns to match the RewardsWP template. The key requirement is having at least one identifier (email is usually the easiest to match) and a points value for each row.

RewardsWP matches the row to the existing member with that email address and adds the points as a new entry in their history. It won’t create a duplicate member.

The file size limit depends on your server’s PHP configuration (specifically the upload_max_filesize and post_max_size settings). Most hosting environments allow at least 2 MB, which is enough for tens of thousands of rows. If your file is too large, try splitting it into smaller batches.


That’s it! The import tool makes it straightforward to bring in members and point balances from any source. 

Still stuck? Submit a ticket and the team that builds it will help.

RewardsWP

Turn One‑Time Buyers Into Lifelong Customers

Points, rewards, referrals and VIP tiers, all in one widget your customers open from any page of your store.