Skip to content
This repository was archived by the owner on Oct 20, 2025. It is now read-only.
This repository was archived by the owner on Oct 20, 2025. It is now read-only.

Braze/Appboy device-mode destination is ignoring the product_id field on the 'Order Completed' event. #25

@abdullah-kasim

Description

@abdullah-kasim

Copied from segmentio/analytics-react-native#277

Hello,

Upon sending the payload below, for the event 'Order Completed', I am getting the error The productId is empty, not logging in-app purchase to Appboy. in android's logcat. This is with verbose logging enabled on Appboy. It's not showing up on Braze's dashboard either.

Interestingly, if I added id alongside the product_id inside the products array, it will log the purchases properly, without the above error

Analytics.track('Order Completed', {
  "app_mode": "Regular",
  "categories": [
    null,
    null
  ],
  "discount": 18.75,
  "first_order": false,
  "line_item_count": 2,
  "order_number": "R270573084",
  "payment_method": "cash on delivery",
  "products": [
    {
      "id": "27", // if I remove this field, purchases don't logged, but the v2 spec said the field is called product_id, not id
      "brand": null,
      "category": null,
      "image_url": "https://d34e5984yv831d.cloudfront.net/spree/images/attachments/000/000/007/product/open-uri20170530-4-16z7kba?1496181795",
      "locale": "en",
      "name": "Neutrogena  Visibly Clear 2In1 Wash 150ml",
      "price": 35.5,
      "product_id": "27", // if I add id: "27" as well in the products array, the purchases would get logged.
      "product_name": null,
      "quantity": 1,
      "url": "https://sandbox.danube.sa/en/products/27"
    },
    {
      "id": "2621", // if I remove this field, purchases don't logged, but the v2 spec said the field is called product_id, not id
      "brand": null,
      "category": null,
      "image_url": "https://d34e5984yv831d.cloudfront.net/spree/images/attachments/000/002/563/product/open-uri20170530-4-s76690?1496183783",
      "locale": "en",
      "name": "Nova Drinking Water 0.6 Ltr",
      "price": 152,
      "product_id": "2621", // if I add id: "2621" as well in the products array, the purchases would get logged.
      "product_name": null,
      "quantity": 1,
      "url": "https://sandbox.danube.sa/en/products/2621"
    }
  ],
  "shipping": 19,
  "shipping_method": "Home Delivery",
  "status": "order placed",
  "subtotal": 187.5,
  "total": 187.75
})

I created the above payload based on this document: https://segment.com/docs/connections/spec/ecommerce/v2/

Platform: react-native, Android

Android Appboy SDK version: +--- com.appboy:android-sdk-base:{strictly 12.0.0} -> 12.0.0 (c)
Android Segment Analytics version: +--- com.segment.analytics.android:analytics:{strictly 4.9.1-beta} -> 4.9.1-beta (c)
React Native react-native-appboy-sdk: 1.26.0
React Native @segment/analytics-react-native-appboy: 1.4.1

I've only tested this on Android. I'll update this issue once I've tested this on iOS.

Extra note: Niall Brennan from segment dropped a note from Segment support that the issue may be related to this line. https://github.com/Appboy/appboy-segment-android/blob/master/appboy-segment-integration/src/main/java/com/segment/analytics/android/integrations/appboy/AppboyIntegration.java#L263

EDIT: Worth noting that it's completely ignoring the quantity field, too - if quantity is 3, it shows up in the dashboard as 1, but I guess that means a ticket rename or a new ticket is needed? Leaving it here so that I remember.

EDIT2: We've decided to integrate directly for this event. See #25 (comment) for further info.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions