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, oremail. - A points value per row. The
pointscolumn 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
| Column | Required | Description |
|---|---|---|
member_id | Conditional | The RewardsWP member ID. Use this when updating existing members. |
user_id | Conditional | The WordPress user ID. Links the member to an existing WordPress account, or creates a new member if no match is found. |
email | Conditional | The member’s email address. Matches an existing member by email, or creates a new one. |
first_name | No | The member’s first name. Recommended for new members. |
last_name | No | The member’s last name. Recommended for new members. |
referral_code | No | A custom referral code for the member. |
status | No | The member’s status (e.g., active, excluded). |
points | Yes | The number of points to add. Each row creates a separate point entry. |
type | No | The point transaction type. |
source_type | No | Where the points came from (e.g., purchase, manual). |
source_id | No | An ID linking the points to a specific source (e.g., an order ID). |
status_points | No | The status of the point entry (e.g., approved, pending). |
created_at | No | The date the point entry was created. Recommended for historical imports. |
expires_at | No | When the points expire. |
note_public | No | A note visible to the member in their activity log. Recommended for clarity. |
note_internal | No | An 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
pointsset to500. 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-DDorYYYY-MM-DD HH:MM:SSfor thecreated_atandexpires_atcolumns. - Save as CSV. Make sure your spreadsheet exports as a standard
.csvfile (comma-separated values), not.xlsxor.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:
| Confidence | What it means |
|---|---|
| Confident | The column header is an exact or near-exact match. No action needed. |
| Moderate | The header is a partial match. Review the mapping to confirm it’s correct. |
| Low | RewardsWP 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 provided | What happens |
|---|---|
member_id | Updates the existing member with that ID. If no member is found, the row is skipped and logged as an error. |
user_id | Looks for a member linked to that WordPress user. If found, updates that member. If not found, creates a new member linked to the user. |
email | Looks 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
pointscolumn value - No valid identifier (
member_id,user_id, oremail) in the row member_iddoesn’t match any existing member- Invalid date format in
created_atorexpires_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
Can I import members from another loyalty plugin?
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.
What happens if I import a row with an email that already exists?
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.
Is there a maximum file size for the import?
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.