Webhook - Adicionar Pontos

Criada por Lucas Almeida Portilho Barcelos, Modificado em Ter, 1 Jul na (o) 10:26 AM por Lucas Almeida Portilho Barcelos

Loyalty Webhook Payload Documentation (Client-Facing)

This document describes the JSON structure of the webhook payloads sent by the Loyalty system to your registered endpoint when specific events occur.

Base Webhook Structure

All webhook notifications delivered to your endpoint will follow this basic JSON format:

{
  "Uuid": "a_unique_identifier_string",
  "Timestamp": "2025-04-15T14:30:00Z",
  "Topic": "Actual_Topic_Name",
  "Payload": { ... }
}

Uuid (`string`): A unique identifier (UUID) for this specific webhook delivery attempt. Use this for logging or ensuring you don't process the same delivery multiple times (idempotency).
Example: `"f47ac10b-58cc-4372-a567-0e02b2c3d479"`

Timestamp (`string`): The date and time (in ISO 8601 format, UTC) when the event originally occurred within the Loyalty system.
Example: `"2025-04-15T14:30:00.123Z"`

Topic (`string`): A string identifying the type of event that occurred. This determines the structure and content of the `Payload` object. See the sections below for details on payloads associated with each specific topic.
Example: `"Communication_EarnPurchasePoints"`

Payload (`object`): A JSON object containing the specific details relevant to the event `Topic`. The structure of this object varies depending on the `Topic` and your subscription configuration (see Custom Payloads section).


Common Data Objects

These JSON objects appear frequently within different `payload` structures:

Customer Object

Contains information about the customer related to the event.

{
  "Email": "customer@example.com",
  "Id": "original_customer_id_123",
  "Name": "John Doe",
  "Phone": "+15551234567",
  "Document": "12345678900 | null",
  "BirthdayDate": "1990-05-20T00:00:00Z | null",
  "PointsBalance": 1500
}

Email (`string`): Customer's primary email address.

Id (`string`): Customer's unique identifier, often the ID from the originating system (e.g., your ecommerce platform).

Name (`string`): Customer's full name.

Phone (`string`): Customer's phone number, typically including country code.

Document (`string` | `null`): Customer's national identification number (e.g., CPF in Brazil), if provided. Otherwise `null`.

BirthdayDate (`string` | `null`): Customer's date of birth (ISO 8601 format, date part usually relevant), if provided. Otherwise `null`.

PointsBalance (`number` - integer): The customer's total points balance *at the moment the event occurred*. This might not reflect the balance *after* the event if the event itself modified the balance (see Points Balance Object for that).

Points Balance Object

Contains details about the customer's points and cashback balance *after* the event has been processed.

{
  "PointsBalance": 1650,
  "CashbackBalance": 16.50
}

PointsBalance (`number` - integer): The customer's total available points balance *after* the event's effects have been applied.

CashbackBalance (`number`): The customer's total available cashback balance (as a decimal value) *after* the event's effects have been applied.


Enum Definitions

Several payload fields represent enumerated types. These are sent as integers in the JSON payload. Here are the mappings for common enums:

CouponType (Integer)

Indicates the type of a coupon.

  • `0`: FixedValue ("Valor fixo" - Fixed value discount)
  • `1`: Percent ("Valor percentual" - Percentage discount)
  • `2`: FreeShipping ("Frete grátis" - Free shipping)
  • `3`: DiscountShipping ("Desconto em frete" - Shipping discount)
  • `4`: Others ("Outros" - Other types, often pre-generated)

ObjectiveType (Integer)

Indicates the reason or activity that triggered an event, often related to earning points.

  • `0`: Purchase ("Fazer compras" - Making purchases)
  • `1`: Signup (Signing up)
  • `2`: Birthday ("Fazer aniversário" - Customer's birthday)
  • `3`: Review ("Fazer um review" - Submitting a review)
  • `4`: Referral ("Indique um Amigo" - Referring a friend)
  • `5`: SocialMediaFollowInstagram ("Siga no Instagram" - Following on Instagram)
  • `6`: SocialMediaFollowFacebook ("Siga no Facebook" - Following on Facebook)
  • `7`: Quiz ("Responda um Quiz" - Answering a quiz)
  • `8`: Custom ("Objetivo Customizado" - Custom objective)

PointType (Integer)

Specifies the detailed reason for a point transaction.

  • `0`: Purchase ("Fez uma compra" - Made a purchase)
  • `1`: Signup ("Criou conta" - Created account)
  • `2`: Birthday ("Fez aniversário" - Had a birthday)
  • `3`: Ordinary ("Concedido por administrador" - Granted by administrator)
  • `4`: Reward ("Trocou por recompensa" - Exchanged for reward)
  • `5`: Review ("Fez um review" - Submitted a review)
  • `6`: Refund ("Reembolso de pontos" - Points refund)
  • `7`: Expire ("Pontos expirados" - Points expired)
  • `8`: Referral ("Indicou um amigo" - Referred a friend)
  • `9`: SocialMediaFollowFacebook ("Seguiu nas redes sociais Facebook" - Followed on Facebook)
  • `10`: SocialMediaFollowInstagram ("Seguiu nas redes sociais Instagram" - Followed on Instagram)
  • `11`: PartialOrderRefund ("Reembolso parcial de pedido" - Partial order refund)
  • `12`: Quiz ("Respondeu um quiz" - Answered a quiz)
  • `13`: CustomObjective ("Pontos de objetivo personalizado" - Custom objective points)
  • `14`: ReferralAffiliate ("Indicação de afiliado" - Affiliate referral)

PointAction (Integer)

Indicates whether points were added or removed in a transaction.

  • `0`: Take (Points were removed or spent)
  • `1`: Grant (Points were added or granted)

Webhook Delivery Guarantees & Retries

  • Idempotency: Each webhook delivery includes a unique `Uuid`. You should store and check this `Uuid` on your end to prevent processing the same event delivery multiple times. While the Loyalty system attempts to prevent sending duplicate events for the same underlying action (using internal checks like idempotency keys provided during API calls and message checksums), relying on the `Uuid` upon receipt is the best practice for ensuring idempotency in your system.
  • Retries: If the Loyalty system fails to deliver a webhook to your endpoint (e.g., due to a network error, a 5xx response from your server, or a timeout), it will automatically retry the delivery. Retries occur with an increasing backoff period.
  • Timeout: The system waits up to 30 seconds for a successful response (HTTP 2xx) from your endpoint before considering the delivery attempt failed.
  • Failures & Deactivation: If delivery attempts for a specific webhook subscription consistently fail (currently after more than 5 unsuccessful attempts for a single event), the system may automatically deactivate the subscription to prevent further load. You will need to investigate the failures and potentially re-activate the subscription in the Loyalty system's interface. Ensure your endpoint is robust and responds promptly (ideally within a few seconds) with an HTTP 2xx status code upon successful receipt. Process the payload asynchronously if necessary to avoid timeouts.

Customization

When configuring your webhook subscription in the Loyalty system, you have options to customize the delivery:

  • Custom Payload Body: You can define a custom JSON structure for the webhook body using a template language. If configured, the `Payload` field in the base structure will contain your custom-rendered JSON instead of the standard objects described below. The standard payload fields (like `Customer`, `Points`, `CouponCode`, etc., depending on the `Topic`) are available as variables within your template. This allows you to tailor the received data precisely to your system's needs.
  • Custom Endpoint URL Variables: Your configured Endpoint URL can also include template variables derived from the event payload data (e.g., `https://yourendpoint.com/webhook/{{Customer.Id}}`). This allows for dynamic routing or processing based on the event content directly in the URL.
  • Custom HTTP Method: You can specify the HTTP method (e.g., `PUT`, `POST`) to be used when sending the webhook, overriding the default `POST`.
  • Custom Headers: You can configure static custom HTTP headers (key-value pairs) that will be included in every webhook request sent to your endpoint. This can be useful for authentication or routing purposes (see Security Considerations).

Consult the Loyalty system's webhook configuration interface for details on the template language and available variables.


Security Considerations

  • HTTPS: Always use an `https://` URL for your webhook endpoint to ensure data is encrypted in transit.
  • Endpoint Secrecy: Keep your endpoint URL difficult to guess.
  • Shared Secret (via Custom Headers): While the system doesn't currently implement payload signature verification (like HMAC), you can establish a shared secret mechanism. Configure a custom header (e.g., `X-Loyalty-Secret`) with a secret value during subscription setup. Your endpoint should then verify the presence and correctness of this header and value in incoming requests to ensure they originate from the Loyalty system. Reject requests that lack the correct secret.

Event Payloads by Topic

The structure of the `payload` object depends on the `topic` string.

Topic: Communication_CouponsToUse

Sent when a communication is triggered regarding coupons available for the customer to use.

Payload Structure:

{
  "CouponType": 1, // Integer, see Enum Definitions
  "ValidDateEnd": "2025-12-31T23:59:59Z | null",
  "CouponValue": 10.00, // e.g., 10.00 for 10% or R$10.00
  "CouponCode": "WELCOME10",
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
}

CouponType (`number` - integer): Indicates the type of the coupon. See `CouponType` Enum Definitions.

ValidDateEnd (`string` | `null`): The expiration date and time of the coupon (ISO 8601 format), if it has one. Otherwise `null`.

CouponValue (`number`): The value associated with the coupon (e.g., `10.0` for a 10% discount, or `25.50` for a R$25.50 fixed discount). The interpretation depends on `CouponType`.

CouponCode (`string`): The actual code the customer needs to enter to redeem the coupon.

Customer (`object`): Details of the customer this communication is about. See Customer Object.

Topic: Communication_RewardCustomRedeemNotification

Sent when a communication is triggered after a customer redeems points for a custom-defined reward.

Payload Structure:

{
  "Points": 500,
  "RewardDescription": "Free Mug with Logo",
  "Coupon": "MUGREDEEM123 | null",
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
}

Points (`number` - integer): The number of points the customer spent to redeem this reward.

RewardDescription (`string`): A description of the specific custom reward that was redeemed.

Coupon (`string` | `null`): If the custom reward redemption generated a coupon code, it will be included here. Otherwise `null`.

Customer (`object`): Details of the customer who redeemed the reward. See Customer Object.

Topics for Earning Points Communications

These topics are sent when a communication is triggered related to a customer earning points for various reasons. The payload structure varies slightly based on the specific reason (topic).

Common Base Fields:

{
  "EarnedPoints": "number (integer)",
  "ObjectiveType": "number (integer)", // See Enum Definitions
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
  // ... other fields specific to the ObjectiveType ...
}

EarnedPoints (`number` - integer): The number of points earned in this specific event.

ObjectiveType (`number` - integer): The specific activity that resulted in points being earned. See `ObjectiveType` Enum Definitions.

Customer (`object`): Details of the customer who earned the points. See Customer Object.

Specific Topics & Additional Fields:

  1. Communication_EarnPurchasePoints: Earning points from a purchase.

    {
      "EarnedPoints": 150,
      "ObjectiveType": 0, // 0 = Purchase
      "Customer": {
        "Email": "customer@example.com",
        "Id": "original_customer_id_123",
        "Name": "John Doe",
        "Phone": "+15551234567",
        "Document": "12345678900",
        "BirthdayDate": "1990-05-20T00:00:00Z",
        "PointsBalance": 1500
      },
      "CashbackEarned": 1.50,
      "ValidDate": "2026-04-15T00:00:00Z", // Expiration of points/cashback
      "OrderDate": "2025-04-15T10:05:00Z",
      "OrderValue": 150.00,
      "PercentCashbackEarned": 0.01, // 1%
      "Date": "2025-04-15T10:05:10Z" // Event record time
    }

    CashbackEarned (`number` | `null`): Monetary amount of cashback earned from this purchase.

    ValidDate (`string` | `null`): Expiration date/time for these points/cashback, if applicable.

    OrderDate (`string`): Date/time the associated order was placed.

    OrderValue (`number`): Total monetary value of the associated order.

    PercentCashbackEarned (`number` | `null`): Percentage rate cashback was earned at (e.g., `0.01` for 1%).

    Date (`string`): Date/time the points earning event was recorded.

  2. Communication_EarnBirthdayPoints: Earning points as a birthday bonus.

    {
      "EarnedPoints": 100, // Could be same as BirthdayPoints
      "ObjectiveType": 2, // 2 = Birthday
      "Customer": {
        "Email": "customer@example.com",
        "Id": "original_customer_id_123",
        "Name": "John Doe",
        "Phone": "+15551234567",
        "Document": "12345678900",
        "BirthdayDate": "1990-05-20T00:00:00Z",
        "PointsBalance": 1500
      },
      "BirthdayPoints": 100, // Specific points for birthday
      "BirthdayBonification": "Happy Birthday Bonus!",
      "CouponType": 1, // Integer | null, 1 = Percentage. See Enum Definitions
      "CouponCode": "BDAYGIFT | null",
      "RedeemUrl": "https://example.com/redeem-bday | null"
      // May include other base fields like 'Date' if applicable
    }

    BirthdayPoints (`number` - integer): Points specifically awarded for the birthday.

    BirthdayBonification (`string` | `null`): Description of the birthday bonus.

    CouponType (`number` - integer | `null`): Type of coupon also awarded, if any. See `CouponType` Enum Definitions.

    CouponCode (`string` | `null`): Coupon code awarded, if any.

    RedeemUrl (`string` | `null`): URL to redeem the benefit/coupon, if applicable.

  3. Communication_EarnSignupPoints: Earning points for signing up.

    {
      "EarnedPoints": 50,
      "ObjectiveType": 1, // 1 = Signup
      "Customer": {
        "Email": "customer@example.com",
        "Id": "original_customer_id_123",
        "Name": "John Doe",
        "Phone": "+15551234567",
        "Document": "12345678900",
        "BirthdayDate": "1990-05-20T00:00:00Z",
        "PointsBalance": 1500
      }
      // May include other base fields like 'Date' if applicable
    }

    (No extra fields specific to signup shown in composer)

  4. Communication_EarnReviewPoints: Earning points for submitting a review.

    {
      "EarnedPoints": 25,
      "ObjectiveType": 3, // 3 = Review
      "Customer": {
        "Email": "customer@example.com",
        "Id": "original_customer_id_123",
        "Name": "John Doe",
        "Phone": "+15551234567",
        "Document": "12345678900",
        "BirthdayDate": "1990-05-20T00:00:00Z",
        "PointsBalance": 1500
      }
      // May include other base fields like 'Date' if applicable
    }

    (No extra fields specific to review shown in composer)

  5. Communication_ReferralCommunicationPoints: Earning points via the referral program (likely the referrer earning).

    {
      "EarnedPoints": 200,
      "ObjectiveType": 4, // 4 = Referral
      "Customer": { // Referrer's details
        "Email": "referrer@example.com",
        "Id": "original_referrer_id_456",
        "Name": "Referrer Name",
        "Phone": "+15559876543",
        "Document": "09876543211",
        "BirthdayDate": "1985-11-10T00:00:00Z",
        "PointsBalance": 2500
      },
      "FriendName": "Jane Smith"
      // May include other base fields like 'Date' if applicable
    }

    FriendName (`string` | `null`): Name of the referred friend, if available.

  6. Communication_EarnQuizPoints: Earning points for completing a quiz.

    {
      "EarnedPoints": 30,
      "ObjectiveType": 7, // 7 = Quiz
      "Customer": {
        "Email": "customer@example.com",
        "Id": "original_customer_id_123",
        "Name": "John Doe",
        "Phone": "+15551234567",
        "Document": "12345678900",
        "BirthdayDate": "1990-05-20T00:00:00Z",
        "PointsBalance": 1500
      }
      // May include other base fields like 'Date' if applicable
    }

    (No extra fields specific to quiz shown in composer)

  7. Communication_EarnCustomObjectivePoints: Earning points from a custom-defined objective.

    {
      "EarnedPoints": 75,
      "ObjectiveType": 8, // 8 = Custom
      "Customer": {
        "Email": "customer@example.com",
        "Id": "original_customer_id_123",
        "Name": "John Doe",
        "Phone": "+15551234567",
        "Document": "12345678900",
        "BirthdayDate": "1990-05-20T00:00:00Z",
        "PointsBalance": 1500
      }
      // May include other base fields like 'Date' if applicable
    }

    (No extra fields specific to custom objective shown in composer)

Topic: Communication_CustomerPointChangeNotification

Sent when a communication is triggered due to a manual or miscellaneous change in a customer's points balance.

Payload Structure:

{
  "Points": -50, // Can be positive or negative
  "PointsValidDate": "2025-08-01", // Formatted date string (check format)
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
}

Points (`number` - integer): The number of points involved in the change (positive for addition, negative for subtraction).

PointsValidDate (`string`): A *formatted string* representing the expiration date related to this point change, if applicable (e.g., "dd/MM/yyyy" or "yyyy-MM-dd").

Customer (`object`): Details of the customer whose balance changed. See Customer Object.

Topic: Communication_PointsToUse

Sent when a communication is triggered informing the customer about their redemption potential.

Payload Structure:

{
  "PointsToUse": 1500,
  "MaxValueDiscount": "R$ 15,00", // Formatted monetary value
  "MaxPercentDiscount": "10%", // Formatted percentage value
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
}

PointsToUse (`number` - integer): The total points the customer currently has available for redemption.

MaxValueDiscount (`string`): A *formatted string* representing the maximum monetary discount the customer can achieve with their current points (e.g., "R$ 15,00").

MaxPercentDiscount (`string`): A *formatted string* representing the maximum percentage discount the customer can achieve (e.g., "10%").

Customer (`object`): Details of the customer. See Customer Object.

Topic: Communication_NotifyExpirablePoints

Sent when a communication is triggered to notify a customer about points that are nearing expiration.

Payload Structure:

{
  "PointsToExpire": 250,
  "ExpirationAt": "2025-07-31T23:59:59Z",
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  },
  "ExpirationDate": "31/07/2025" // Formatted date string
}

PointsToExpire (`number` - integer): The number of points that are scheduled to expire soon.

ExpirationAt (`string`): The exact date and time (ISO 8601 format) when these points will expire.

Customer (`object`): Details of the customer whose points are expiring. See Customer Object.

ExpirationDate (`string`): A *formatted string* representing the expiration date (e.g., "dd/MM/yyyy").

Topic: Communication_RedeemPoints

Sent when a communication is triggered after a customer redeems points for a standard reward (like a discount coupon).

Payload Structure:

{
  "CouponCode": "REDEEM5OFF",
  "CouponDescription": "R$ 5,00 Discount Coupon",
  "Points": 500,
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
}

CouponCode (`string`): The coupon code generated or used for this redemption.

CouponDescription (`string`): A description of the reward obtained through redemption.

Points (`number` - integer): The number of points the customer spent.

Customer (`object`): Details of the customer who redeemed points. See Customer Object.

Topic: Communication_SentOTPToCustomer

Sent when a communication (likely SMS or Email) containing a One-Time Password (OTP) is triggered. Security Note: Be cautious about processing OTPs received via webhooks; ensure your endpoint and handling logic are secure.

Payload Structure:

{
  "Otp": "123456",
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
}

Otp (`string`): The One-Time Password that was sent to the customer.

Customer (`object`): Details of the customer the OTP was sent to. See Customer Object.

Topics: Communication_CustomerTierUpgradeNotification, Communication_CustomerTierDowngradeNotification

Sent when a communication is triggered because a customer's loyalty tier has changed (either upgraded or downgraded).

Payload Structure:

{
  "TierName": "Gold",
  "Benefits": [
    "Free Shipping on all orders",
    "Early access to sales",
    "Dedicated support line"
  ],
  "NextTierTargets": [ // Empty if highest tier or downgrade
    "Spend R$ 5000 in the next 6 months",
    "Maintain Gold status for 1 year"
  ],
  "Customer": {
    "Email": "customer@example.com",
    "Id": "original_customer_id_123",
    "Name": "John Doe",
    "Phone": "+15551234567",
    "Document": "12345678900",
    "BirthdayDate": "1990-05-20T00:00:00Z",
    "PointsBalance": 1500
  }
}

TierName (`string`): The name of the tier the customer has now entered.

Benefits (`array` of `string`): A list of text descriptions for the benefits associated with this new tier.

NextTierTargets (`array` of `string`): A list of text descriptions outlining what the customer needs to do to reach the *next* tier level (if applicable, might be empty for downgrades or the highest tier).

Customer (`object`): Details of the customer whose tier was updated. See Customer Object.

Topics for Direct Point Transactions

These topics relate to the direct recording or modification of points in the system, often triggering related communication events as well.

  1. Point_Add, Point_Update, Point_Removed: General point record changes.

    Payload Structure:

    {
      "Points": 150, // Can be positive or negative depending on action/update
      "PointType": 0, // Integer, 0 = Purchase. See Enum Definitions
      "PointAction": 1, // Integer, 1 = Grant. See Enum Definitions
      "Customer": {
        "Email": "customer@example.com",
        "Id": "original_customer_id_123",
        "Name": "John Doe",
        "Phone": "+15551234567",
        "Document": "12345678900",
        "BirthdayDate": "1990-05-20T00:00:00Z",
        "PointsBalance": 1500
      },
      "PointsBalance": {
        "PointsBalance": 1650,
        "CashbackBalance": 16.50
      }, // Points Balance Object (after change)
      "PointId": 98765 // Internal ID of the point transaction record
    }

    Points (`number` - integer): The number of points involved in this specific transaction record.

    PointType (`number` - integer): The category or reason for the point transaction. See `PointType` Enum Definitions.

    PointAction (`number` - integer): The specific action performed on this record. See `PointAction` Enum Definitions.

    Customer (`object`): Details of the customer involved. See Customer Object.

    PointsBalance (`object`): The customer's points and cashback balance *after* this transaction. See Points Balance Object.

    PointId (`number` - integer): The unique internal identifier for this specific point transaction record within the Loyalty system.

  2. EarnPointsReferralAffilidate: An *affiliate* earns points/cashback from a referred customer's action.

    Payload Structure:

    {
      "Points": 250,
      "CashbackReceived": 2.50,
      "OrderPlacementDate": "2025-04-14T16:20:00Z", // Referred customer's order date
      "Customer": { // Affiliate's Customer Object
        "Email": "affiliate@example.com",
        "Id": "original_affiliate_id_789",
        "Name": "Affiliate Name",
        "Phone": "+15551112233",
        "Document": "11223344556",
        "BirthdayDate": "1988-03-15T00:00:00Z",
        "PointsBalance": 5000
      },
      "PointsBalance": { // Affiliate's Points Balance Object (after earning)
        "PointsBalance": 5250,
        "CashbackBalance": 52.50
      }
    }

    Points (`number` - integer): Points earned by the *affiliate*.

    CashbackReceived (`number`): Cashback amount earned by the *affiliate*.

    OrderPlacementDate (`string`): Date and time (ISO 8601 format) when the *referred customer* placed the qualifying order that triggered this reward.

    Customer (`object`): Details of the *affiliate* customer who earned the reward. See Customer Object.

    PointsBalance (`object`): The *affiliate's* points and cashback balance after this event. See Points Balance Object.

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo