Skip to main content

99minds Loyalty Card Transaction Add To iPaaS

Automatically synchronize loyalty card transactions from 99Minds to iPaaS

Updated over 2 weeks ago

Overview

This document outlines the configuration for automatically synchronizing Loyalty Card Transaction records from the 99minds Loyalty Card Transaction entity to the iPaaS Transaction entity. The integration uses an API-based sync that triggers whenever a Loyalty Card Transaction record is created in 99minds.

Mapping Collection Status

  • Mapping Status: Enabled.

  • Trigger Events: The sync is triggered by the creation of Loyalty Card Transactions in 99minds.

  • ID Format: When manually syncing, the Loyalty Card Transaction ID from 99minds is used. This can be resolved via an external ID.

  • Conflicting Mappings: This mapping applies only to Loyalty Card Transactions. Ensure no other mappings target the same 99minds entity to prevent data from being overwritten.

System Caveats

99minds Caveats

  • Each transaction must include TransactionAmount and TransactionType for proper classification.

  • Transactions referencing an order should include ClientOrderId to prevent duplicates.

iPaaS Caveats

  • The destination system requires a unique TransactionNumber for every Loyalty Transaction.

Setup Requirements

99minds Configuration

All loyalty point transactions must include:

  • TransactionAmount

  • TransactionType

  • ClientOrderId (when related to an order)

  • A valid customer reference or external identifier

iPaaS Configuration

  • CustomerId must resolve via internal lookup using customer mapping.

  • Ensure the iPaaS Loyalty Transaction entity has fields configured.

Authentication & Security

  • 99minds API Secret Key: Used to access iPaaS API for fetching Loyalty Card Transaction and related data.

Integration Flow

  1. Retrieve Data: Fetch newly created point transactions from 99minds based on Last Sync Time.

  2. Check Existing Orders: If a transaction references an order and that order already exists in iPaaS, the system will skip creation to avoid duplication.

  3. Map Fields: Apply the mapping rules to transform 99minds values into the iPaaS Loyalty Transaction format.

  4. Assign Static Values: Default values for Ticket Type and Status are applied.

  5. Transfer Data: Push transformed transactions to iPaaS as new entries only.

Mappings

Loyalty Card Transaction Transaction

Filter

var existingOrder = await IpaasTransactionIdByNumber(ClientOrderId);
if (existingOrder == null
&& TransactionType != "RELOAD"
& TransactionType != "REDEMPTION"
& TransactionAmount != "0.00"
{return true;} else {return false;}

Description

If an existing order match is found in iPaaS for this point adjustment, this mapping collection filter will not create a new one.

99minds Customer To iPaaS.com

Mapping Type

Source Field (99minds)

Destination Field (iPaaS)

Description

Dynamic Formula

CurrentDateTimeOffset()

99minds Last Sync Time (custom field)

Field

TransactionAmount

99minds Points Earned / Used (custom field)

Field

TransactionType

99minds Points Transaction Type (custom field)

Dynamic Formula

if (ClientOrderId != null) return await GetTransactionListForCard Transaction(Card TransactionId,ClientOrderId); return TransactionId+"|"+TransactionType+"|"+TransactionAmount;

99minds Order Transactions (custom field)

If multiple transactions occurred, this will search for all of them

Dynamic Formula

SpaceportSystemId

SystemId

Dynamic Formula

"99minds "+ TransactionId

TransactionNumber

Dynamic Formula

await GetCustomerId(Card TransactionId);

CustomerId

Static

Ticket

Type

Static

Complete

Status

Field

TransactionAmount

Total

Error Handling

Duplicate Transaction (Order Match Found)

No new record created — existing order matched.

  • Description: The transaction references an order already synced to iPaaS.

  • Resolution: No action required — this is expected behavior to prevent duplicates.

Missing Transaction Amount

TransactionAmount not found.

  • Description: iPaaS cannot process the record without point’s value.

  • Resolution: Ensure 99minds always supplies TransactionAmount.

Invalid Customer Identifier

Failed to resolve CustomerId

  • Description: Customer lookup function returned null.

  • Resolution: Validate customer mapping or ensure customer exists in iPaaS.

Missing Transaction Type

TransactionType missing

  • Description: System cannot determine if this is earn/redeem.

  • Resolution: Fix data in 99minds before syncing.

Validation Rules & Testing

Validation Checklist

  • TransactionNumber created correctly with 99minds {TransactionId} format.

  • CustomerId resolves successfully.

  • Order-based transactions are skipped when they already exist.

  • Status always appears as Complete.

  • Total equals TransactionAmount.

Test Scenarios

  1. New Loyalty Card Transaction Sync: Create a new Loyalty Card Transaction in 99minds and verify that it appears in iPaaS with correct Number, Balance, and PurchaseDate.

  2. Duplicate Prevention: Attempt syncing an already existing LoyaltyCode and ensure the system skips it without overwriting.

  3. Email Validation: Enter an invalid recipient email in 99minds and confirm that sync fails gracefully with appropriate error logging.

  4. Balance Verification: Confirm that both Balance and OriginalAmount match expected values in iPaaS.

Additional Notes

  • This mapping supports Add-Only creation of Loyalty Transactions. Updates must be handled through separate mapping collection.

Did this answer your question?