Skip to main content

Import Historical Points or Credits Transactions

Import past points or credits activity with CSV so balances are rebuilt from your imported transaction history.

Written by Stuart Chaney
Updated this week

Introduction

Use the Points Logs CSV importer when you want to backfill historical loyalty activity into Rivo. This creates transaction history rows (not just a one-time balance adjustment), then recalculates each affected customer’s points or credits balance from that imported history.

This is useful for migrations, historical corrections, and bringing older activity into your current program records.




Before You Import

  1. Go to Settings > CSV Imports.

  2. Set Data Type to Points Logs.

  3. Click Download Template.

  4. Prepare your CSV using the required format below.




CSV Format

Your file must include:

  • A customer identifier column: customer_id or email

  • A transaction amount column: points_amount or credits_amount

Optional columns:

  • source

  • points_amount

  • credits_amount

  • internal_note

  • external_note

  • applied_at

  • approved_at

  • revoked_at

  • expires_at

  • order_id

  • custom_action_name

  • earning_rule_id

  • points_purchases_id


Header aliases accepted

The importer accepts common header variants, including:

  • customer_id, Customer ID, CustomerID, Shopify Customer ID

  • email, Email, customer_email, Customer Email, Shopify Customer Email

  • points_amount, Points Amount

  • credits_amount, Credits Amount


Amount behavior

  • Positive values add points or credits.

  • Negative values deduct points or credits.

  • Rows where both amounts are zero are skipped.

  • A row can include both points_amount and credits_amount.


Date behavior

If applied_at is missing or invalid, Rivo uses the current timestamp.
If approved_at is missing or invalid, it defaults to the final applied_at value.
Invalid revoked_at or expires_at values are ignored.




Matching and Processing Rules

Use one matching method per file

Do not mix lookup methods in one CSV.

  • If any row includes customer_id, the import uses customer ID matching for the file.

  • In that case, rows without a valid customer_id can be skipped, even if they include an email.

Best practice: use either customer IDs for all rows, or emails for all rows.

Existing customers only

Rows are imported only when the customer already exists in your store’s Rivo customer records.
Unknown customers are skipped.

Duplicate protection

If you import the same transaction row again (including across separate import runs), duplicate rows are ignored.




Upload and Monitor Progress

  1. In Settings > CSV Imports, upload your file in the dropzone.

  2. Rivo queues processing in the background.

  3. Open CSV Import Progress and click View CSV Imports to monitor status.

Possible statuses include Pending, Processing, Completed, Failed, Reverting, Reverted, and Cancelled.

For large files, processing time scales with row count. Smaller files can finish in seconds, while very large files may take much longer.




What Happens After Import

After rows are imported:

  • Transaction history entries are created for matched customers.

  • Customer balances are recalculated for the affected balance type:

    • points imports recalculate points balances

    • credits imports recalculate credits balances

    • rows with both amounts trigger both recalculations

  • Imported rows are tagged for traceability so they can be reverted later from CSV Imports history.

Customer-facing message records are not generated by this importer.




Revert an Imported File

If you need to roll back a completed import:

  1. Go to Settings > CSV Imports.

  2. Click View CSV Imports.

  3. Find the completed import and click Revert.

This queues a rollback that reverses the points/credits effects from that CSV import.




FAQ

Can I import points and credits in one file?
Yes. A row can contain both points_amount and credits_amount.

Will this create new customers from email addresses in my CSV?
No. Only customers that already exist in your Rivo customer records are updated.

What if my source value is blank or not recognized?
Rivo assigns a default import source automatically.

Can I safely retry an import file?
Yes. Duplicate rows are skipped based on duplicate protection rules.

Can I upload historical timestamps?
Yes. Use applied_at and approved_at in your CSV when you want historical dates preserved.

Did this answer your question?