Importing loyalty members

Bring members and their points balances into Meisei from a spreadsheet, and export them back out.

Before you start

  • Your customers need to be in Meisei already. Members are matched by email address, and an address Meisei has never seen is skipped.
  • Your program and its tiers need to exist. The import matches tiers by name. See Loyalty and Loyalty tiers.

The import brings in balances only. Each member's points arrive as one opening entry, so their history starts clean. Punch card progress isn't imported, because it counts the events your own systems report.

Import a file

  1. Prepare a spreadsheet with an email column and a points column. Add a tier column to place members in a tier, and a program column only if you run several programs. Balances are whole numbers. An empty points cell leaves a balance alone, and 0 sets it to zero.

  2. Open Loyalty → Activity and choose Import members from the actions menu.

    The actions menu on Loyalty activity with Import members, Export activity and Export members

  3. Leave Format on Meisei, or pick LoyaltyLion, Smile.io or Rivo to upload their export unchanged. See Loyalty import formats.

    The Import loyalty members dialog with a LoyaltyLion export chosen

  4. Upload the file. The import runs in the background, so you can leave the page.

  5. Check the result under Settings → Imports. Rows naming an unknown customer, program or tier are skipped and listed with their row numbers. Fix those rows and import the file again.

    A finished members import in the LoyaltyLion format, with one skipped row and notes about the columns that were not imported

Tiers

The tier in the file is applied as it is, rather than worked out from earning history, so nobody drops to the bottom tier on day one. After that, the tier placement automation can move the member up once their points reach a higher tier. It only moves them down from a 12-month tier a year after they got it, and only if they no longer earn enough. Leave the column out and the automation places each member from their opening balance on its next daily pass instead. Imported balances are a migration rather than new activity, so they fire no loyaltyTransaction.created webhook and nothing reacts to them the moment they land.

Running it twice

Re-running a file is safe. Each member is reconciled to the file's values:

  • Nothing changed means nothing happens.
  • If the member hasn't earned or spent since, their opening entry is updated in place.
  • If they have, a correcting adjustment moves the balance by the difference, so the activity in between is kept.

Members already enrolled are never enrolled twice.

Export

From the same actions menu under Loyalty → Activity:

  • Export members writes one row per member with their program, tier, join date and points balance. Members who left are included with a leaving date; so remove those rows before re-importing unless you want them re-enrolled. An export can be edited and imported straight back in.
  • Export activity writes every ledger entry, newest first, covering points and rewards. It's the file to hand to an accountant reconciling the points liability.

Finished files appear under Settings → Exports.

If something isn't working

Message on the jobWhat to do
"No customer with the email ..."Members need their customer in Meisei first. Import your customers, or connect your store, then run the same file again.
"The organization has more than one loyalty program, so add a program column."Add a program column naming the program each member joins.
"No loyalty program named ..."The program column has to match a program's name exactly. Check the spelling under Loyalty.
"No active tier named ... in the program ..."The tier is spelled differently or isn't set up yet. Add it in the Tiers section of Loyalty → Overview, then run the file again.
"A points balance cannot be negative."Set the balance to 0, or leave the member out.

See Imports and exports for the messages every import can show.

Next steps

For developers

Meisei's own columns are email (required), program, tier and points. The members export adds joinedAt, leftAt and pointsLifetimeEarned, which are ignored on import. The activity export columns are id, createdAt, type, customer, program, rule, amount, balanceAfter, details, eventKey and revokeTransactionId. On a re-run that puts a value back to what the previous file said, the earlier correction is revoked rather than stacking another one.