Skip to main content

99minds to iPaaS.com Loyalty Card Transaction Mapping Documentation

Automatically synchronize loyalty card transactions from 99Minds to iPaaS

99minds to iPaaS.com Loyalty Card Transaction Mapping Documentation

99minds loyalty point activity is recorded in iPaaS.com as transactions through 99minds loyalty webhooks or Manual Sync. Each point earn or redemption from 99minds is captured on an iPaaS.com transaction (type Ticket) carrying the points amount, transaction type, and the related customer and order references. The Add collection creates a new iPaaS.com transaction for a loyalty point adjustment that has no matching order, while the Update collection writes loyalty information onto an existing iPaaS.com transaction without overwriting its original order data.

ID Format

Manual Sync ID Format

On the iPaaS.com Manual Sync page, enter the 99minds loyalty transaction id — for example, transaction_a3c44bd1f3bf8b1c2f.

External ID Format

After a successful transfer, the transaction number — generated as the word "99minds" followed by the 99minds transaction id — is recorded as the external-id link. Whether an incoming loyalty transaction is created or updated in iPaaS.com is determined by whether it is already linked by an external id, not by which webhook event fired.

Deleted Record Support

Outbound delete is not supported. These collections create and update loyalty transactions only; the Delete operation is not implemented, delete mappings are not included, and removing or reversing a loyalty record in 99minds does not delete the corresponding transaction in iPaaS.com.

Mapping Collection Status

  • Status: Enabled.

  • Trigger Events: Automatic transfers fire when 99minds sends a loyalty point webhook to iPaaS.com. These webhook events must be configured manually in 99minds (Settings → Webhooks → Manage → New Webhook) using your iPaaS.com subscription Webhook API Key — see the 99minds Installation Instructions. The applicable 99minds loyalty events are loyalty_point.credited and loyalty_point.debited. No automatic transfers occur until the 99minds webhook is configured. Manual Sync is available at any time. Whether an incoming loyalty transaction is created or updated in iPaaS.com is determined by whether it is already linked by an external id, not by which event fired.

Duplicate or Conflicting Mappings

The Add 99minds Loyalty Card Transaction TO iPaaS.com and Update 99minds Loyalty Card Transaction TO iPaaS.com collections move loyalty activity in the same direction (99minds → iPaaS.com): Add creates a new iPaaS.com transaction for a loyalty point adjustment, and Update writes loyalty information onto an existing transaction. Review both collections' filters before enabling so a single loyalty event is not both created and updated in conflicting ways.

Collision Handling

Collision handling is not used by these collections — neither collection has a collision handling method configured.

Supported Child Collections

None — both are standalone collections with no dependent child collections.

System Caveats

99minds Caveats

  • The loyalty values reflect the 99minds loyalty card transaction recorded for the order.

  • Reload and Redemption transaction types do not produce loyalty-point tickets and are excluded by the Add collection's filter.

iPaaS.com System Caveats

  • The custom fields used to capture 99minds loyalty data must exist on the iPaaS.com Transaction before the values can be stored (see Setup Requirements).

  • The Update collection expects the transaction to already exist in iPaaS.com.

Integration-Specific Caveats

  • On update, all core transaction fields (number, customer, totals, tax, shipping, dates, type, and status) are preserved from the existing iPaaS.com transaction and are not overwritten; only the 99minds loyalty custom fields are applied.

Setup Requirements

iPaaS.com Configuration

  • Create the loyalty custom fields on the Transaction under Subscription Settings → Custom Fields: 99minds Points Transaction Type, 99minds Points Earned / Used, 99minds Order Transactions, and 99minds Last Sync Time.

99minds Configuration

  • In the 99minds portal, configure the loyalty webhooks under Settings → Webhooks → Manage → New Webhook, using your iPaaS.com subscription Webhook API Key. Subscribe to the loyalty events loyalty_point.credited and loyalty_point.debited.

Authentication & Security

Authentication uses the 99minds API key configured on the subscription, and inbound webhooks use the iPaaS.com subscription Webhook API Key — see the 99minds Installation Instructions.

Integration Flow

  1. 99minds sends a loyalty point webhook (loyalty_point.credited or loyalty_point.debited) to iPaaS.com, or the subscriber runs a Manual Sync with the 99minds loyalty transaction id.

  2. The integration routes the loyalty transaction to the Add or Update collection based on whether it is already linked by an external id, not by which event fired.

  3. Add: if no matching order already exists in iPaaS.com for the adjustment and the transaction type is not Reload or Redemption, a new iPaaS.com transaction (type Ticket, status Complete) is created with the points amount, transaction type, resolved customer, and order references, and the transaction number is saved as the external-id link.

  4. Update: loyalty information (transaction type, points earned/used, order transactions, and last sync time) is written onto the matching iPaaS.com transaction while its existing order values are preserved.

Mappings

Add 99minds Loyalty Card Transaction TO iPaaS.com

Mapping Filter

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

Filter Description. A new transaction is created only when no matching order already exists in iPaaS.com for the adjustment (no transaction is found by the order id), the transaction type is not RELOAD and not REDEMPTION, and the transaction amount is not "0.00". Reload and Redemption types are excluded and do not create a loyalty-point ticket; zero-amount adjustments are also skipped. Records that fail any of these conditions are excluded from transfer.

Description: Creates a new iPaaS.com transaction (type Ticket, status Complete) recording a 99minds loyalty point adjustment, carrying the points amount, transaction type, and the related customer and order references.

Mapping Type

Source Field (99minds)

Destination Field (iPaaS.com)

Description

Dynamic Formula

(see formula below)

99minds Last Sync Time

Records the date and time the integration created this transaction record, stamped with the current moment as the sync runs. Custom field for loyalty data; must already exist on the iPaaS.com transaction configuration.

Field

TransactionType

99minds Points Transaction Type

Carries the 99minds transaction type for the point adjustment, identifying what kind of loyalty activity this record represents. Custom field for loyalty data; must already exist on the iPaaS.com transaction configuration.

Field

TransactionAmount

99minds Points Earned / Used

Carries the number of loyalty points earned or used in the 99minds point adjustment. Custom field for loyalty data; must already exist on the iPaaS.com transaction configuration.

Dynamic Formula

(see formula below)

99minds Order Transactions

When the point adjustment is tied to an order, gathers all of the related loyalty transactions for that order and loyalty card so they are captured together; otherwise records the details of the single transaction. Custom field for loyalty data; must already exist on the iPaaS.com transaction configuration.

Dynamic Formula

SpaceportSystemId

SystemId

Sets the iPaaS.com system that owns this transaction, so the new record is associated with the correct source system.

Dynamic Formula

(see formula below)

TransactionNumber

Generates the transaction number as the word "99minds" followed by the 99minds transaction id, giving each record a clear, traceable reference back to its source loyalty transaction.

Dynamic Formula

(see formula below)

CustomerId

Resolves the iPaaS.com customer from the 99minds loyalty card on the adjustment, so the transaction is linked to the right customer.

Static

Ticket

Type

Always sets the transaction type to Ticket. A fixed value identifying every loyalty point adjustment record created by this collection as a ticket-type transaction.

Static

Complete

Status

Always sets the transaction status to Complete. The point adjustment has already happened in 99minds, so the resulting iPaaS.com record is created in a finished state.

Field

TransactionAmount

Total

Sets the transaction total to the point amount from the 99minds adjustment, recording how many points were earned or used on the transaction record.

99minds Last Sync Time formula:

CurrentDateTimeOffset()

99minds Order Transactions formula:

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

TransactionNumber formula:

"99minds "+ TransactionId

CustomerId formula:

await GetCustomerId(CardId);

Update 99minds Loyalty Card Transaction TO iPaaS.com

Mapping Filter

TransactionAmount != "0.00"

Filter Description. Only transactions with a non-zero amount are processed; zero-amount transactions are skipped.

Description: Updates an existing iPaaS.com transaction with loyalty information from 99minds, recording the loyalty points earned or used and the transaction type while preserving the transaction's existing order values.

Mapping Type

Source Field (99minds)

Destination Field (iPaaS.com)

Description

Dynamic Formula

(see formula below)

99minds Last Sync Time

Stamps the iPaaS.com transaction with the current date and time whenever this loyalty update runs, giving an audit trail of when 99minds loyalty data was last applied. Custom field; must already exist on the iPaaS.com transaction configuration. Recommended for tracking sync activity.

Field

TransactionType

99minds Points Transaction Type

Records the 99minds transaction type (for example, points earned or points redeemed) onto the iPaaS.com transaction so the nature of the loyalty activity is visible alongside the order. Custom field; must already exist on the iPaaS.com transaction configuration. Recommended for any meaningful loyalty reporting.

Field

AllTransactionAmounts

99minds Points Earned / Used

Records the number of loyalty points earned or used by this transaction onto the iPaaS.com transaction. Custom field; must already exist on the iPaaS.com transaction configuration. Recommended, as it carries the core loyalty point value for the transaction.

Dynamic Formula

(see formula below)

99minds Order Transactions

Builds a summary of the loyalty transactions tied to the order. When the transaction is linked to an order, gathers the full list of loyalty card transactions for that order; otherwise records the single transaction's identifier, type, and amount. Custom field; must already exist on the iPaaS.com transaction configuration. Recommended for complete loyalty reporting.

Dynamic Formula

DestinationValue.SystemId

SystemId

Preserves the existing iPaaS.com SystemId; not overwritten by this update.

Dynamic Formula

DestinationValue.TransactionNumber

TransactionNumber

Preserves the existing iPaaS.com TransactionNumber; not overwritten by this update.

Dynamic Formula

DestinationValue.CustomerId

CustomerId

Preserves the existing iPaaS.com CustomerId; not overwritten by this update.

Dynamic Formula

DestinationValue.Type

Type

Preserves the existing iPaaS.com Type; not overwritten by this update.

Dynamic Formula

DestinationValue.Status

Status

Preserves the existing iPaaS.com Status; not overwritten by this update.

Dynamic Formula

DestinationValue.EmailAddress

EmailAddress

Preserves the existing iPaaS.com EmailAddress; not overwritten by this update.

Dynamic Formula

DestinationValue.DiscountAmount

DiscountAmount

Preserves the existing iPaaS.com DiscountAmount; not overwritten by this update.

Dynamic Formula

DestinationValue.TaxAmount

TaxAmount

Preserves the existing iPaaS.com TaxAmount; not overwritten by this update.

Dynamic Formula

DestinationValue.ShippingAmount

ShippingAmount

Preserves the existing iPaaS.com ShippingAmount; not overwritten by this update.

Dynamic Formula

DestinationValue.Subtotal

Subtotal

Preserves the existing iPaaS.com Subtotal; not overwritten by this update.

Dynamic Formula

DestinationValue.Total

Total

Preserves the existing iPaaS.com Total; not overwritten by this update.

Dynamic Formula

DestinationValue.TotalQty

TotalQty

Preserves the existing iPaaS.com TotalQty; not overwritten by this update.

Dynamic Formula

DestinationValue.TransactionCreatedDateTime

TransactionCreatedDateTime

Preserves the existing iPaaS.com TransactionCreatedDateTime; not overwritten by this update.

99minds Last Sync Time formula:

CurrentDateTimeOffset()

99minds Order Transactions formula:

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

Error Handling

  • Custom field not found — if any of the loyalty custom fields (99minds Points Transaction Type, 99minds Points Earned / Used, 99minds Order Transactions, 99minds Last Sync Time) does not exist on the iPaaS.com Transaction, the loyalty values cannot be stored. Create the missing fields under Subscription Settings → Custom Fields.

  • Update with no matching transaction — the Update collection expects the transaction to already exist in iPaaS.com. If no matching transaction is found by its external-id link, there is nothing to update. Confirm the transaction was first created (for example, by the Add collection or the order workflow).

  • Customer could not be resolved (Add) — if the integration cannot resolve the iPaaS.com customer from the 99minds loyalty card, the new transaction cannot be linked to a customer. Confirm the loyalty card resolves to a known iPaaS.com customer.

Testing & Validation

Test Scenarios

  1. Create a loyalty transaction (Add) — send a 99minds loyalty point webhook (or run a Manual Sync) for an adjustment whose order does not already exist in iPaaS.com and whose type is not RELOAD or REDEMPTION; confirm a new iPaaS.com transaction is created with type Ticket, status Complete, the points amount on Total and the loyalty custom fields, and the resolved customer.

  2. Filter exclusion (Add) — send a RELOAD or REDEMPTION adjustment, or one with an amount of "0.00", or one whose order already exists in iPaaS.com; confirm no new transaction is created.

  3. Update an existing transaction — send a loyalty point webhook (or run a Manual Sync) for a transaction that already exists in iPaaS.com; confirm the loyalty custom fields are written and the core order fields (number, customer, totals, tax, shipping, dates, type, status) are unchanged.

  4. Filter exclusion (Update) — send an update with a transaction amount of "0.00"; confirm it is skipped.

  5. External-id routing — repeat the same loyalty transaction; confirm it updates the previously linked iPaaS.com transaction rather than creating a duplicate.

  6. Custom field validation — confirm all four loyalty custom fields exist on the Transaction before enabling, and that their values populate after a transfer.

Validation Checklist

  • New loyalty transactions are created in iPaaS.com with type Ticket, status Complete, the correct points amount, and the resolved customer.

  • The loyalty custom fields (transaction type, points earned/used, order transactions, last sync time) are populated on both Add and Update.

  • On update, the existing order fields are preserved and not overwritten.

  • Reload, Redemption, and zero-amount adjustments are excluded by the Add filter; zero-amount transactions are excluded by the Update filter.

  • The external-id link (transaction number) is saved and reused so repeat adjustments update rather than duplicate.

Additional Notes

  • The four loyalty custom fields must exist on the iPaaS.com Transaction before enabling either collection.

  • 99minds loyalty webhooks (loyalty_point.credited and loyalty_point.debited) must be configured manually on the 99minds side; no automatic transfers occur until they are configured.

  • Add/Update routing is determined by whether the loyalty transaction is already linked by an external id, not by which webhook event fired.

Related Documents

Setup & Reference

Mapping Documentation

Did this answer your question?