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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions