Importing and exporting loyalty data

Bringing members across from LoyaltyLion, Smile, Rivo or another loyalty platform is a CSV upload. Open Loyalty activity, choose Import members from the actions menu, and pick your file. The import runs in the background, so you can leave the page. Progress and any problems show up under Settings, Imports.

The same menu exports two files: Export members writes every member with their tier and points balance (the reverse of the import), and Export activity writes every ledger entry as a CSV for accounting. Finished exports appear under Settings, Exports.

This page is the file format. For the order to do a whole switch-over in, and what to do about the things a CSV cannot carry, see Moving a loyalty program to Cascade.

Before you start

Members are matched to customers by email address, and a customer the import has never seen is skipped rather than created, so import your customers first. Your loyalty program and its tiers also have to exist already; the import matches both by name, ignoring case. See Setting up loyalty if you have not built the program yet.

The import is balances only. A member's points arrive as a single opening adjustment, so their history in Cascade starts clean rather than replaying years of old transactions. Stamp card balances are not imported.

If you do want the entries behind the balances, for rolling tier thresholds or for monthly activity, the history API writes them with their original timestamps and reduces the opening adjustment by whatever they explain, so nothing is counted twice.

Columns

The columns below are Cascade's own format, which is what the Format picker on the import dialog defaults to. If your file came straight out of LoyaltyLion, Smile or Rivo, pick that platform instead and upload it unchanged. See Migrating from a named platform for what each of those formats expects.

ColumnRequiredDescription
emailYesEmail address of the customer to enroll. The customer must already exist.
programNoName of the loyalty program. Leave it out and your only program is used; required with several programs.
tierNoName of the tier to place the member in. See Tiers.
pointsNoThe member's points balance on the platform you are leaving.

An empty points cell leaves the member's balance alone; a 0 explicitly sets it to zero. Balances must be whole numbers of zero or more.

A minimal file needs two columns:

The columns a members export adds for reference (joinedAt, leftAt, and pointsLifetimeEarned) are ignored on import, so an export can be edited and imported straight back in.

Tiers

The tier comes from the file, not from recalculation: a migrated member has no earning history in Cascade, so recalculating would drop everyone to the bottom tier. The tier is applied without pinning it, which means future earning can still promote the member, but the periodic tier review never demotes them below what the file said. Leave the column empty to let the member's opening balance place them instead.

Running it twice

Re-running a file is safe, and reconciles each member to the file's values:

  • If nothing changed, nothing happens.
  • If the opening adjustment is still the only entry in the member's ledger, it is updated in place to the new value.
  • If the member has earned or spent since the first run, a correcting adjustment moves the balance by the difference between the two file values, so the activity in between is preserved. If a re-run puts the value back to what the previous file said, the earlier correction is revoked instead of stacking another one.

Members who are already enrolled are never enrolled twice, and a re-run with the same tier leaves the tier alone.

When a row doesn't match

An import doesn't stop at the first bad row. Rows that name an unknown customer, program or tier are skipped, and each one is listed with its row number on the import job under Settings, Imports. Fix those rows and import the file again; everything that already landed is reconciled rather than duplicated.

Exports

Export members writes one row per member: email, program, tier, joinedAt, leftAt, points, and pointsLifetimeEarned. Members who left the program are included with leftAt set; remove those rows before re-importing unless you want them re-enrolled.

Export activity writes one row per ledger entry, newest first: id, createdAt, type, customer, program, rule, amount, balanceAfter, details, eventKey, and revokeTransactionId. It covers points, stamps, and reward activity, which makes it the file to hand to an accountant reconciling the points liability.