Hi everyone
We’re building a Canvas App Sheet for a live Intercom Messenger integration. Our goal is to let logged-in users view and update profile data — specifically values like First Name
, Last Name
, Primary Chapter
, and SpotMe_Id
— all of which are being passed into Intercom via a custom embed snippet.
These custom attributes show correctly on the user profile inside Intercom.
But when the Canvas App loads via
/sheet
, the contact.custom_attributes
payload does not include these fields (we checked with full logging of req.body
). We tried accessing them via:
js
const contact = req.body.contact || req.body.context?.contact || {}; const attrs = contact.custom_attributes || {};
Even though we can see the correct attributes in Intercom, attrs
only contains empty/default values like Member
, or Global
.
We’ve verified:
-
intercomSettings
in the embed includes the attributes (they appear in the user profile) -
We’re using
open_mode: "conversation"
in our Canvas App button -
App is launched via a Workflow (and also tried via Messenger)
Here’s a simplified version of how we inject the data via embed:
js
window.intercomSettings = { app_id: "APP_ID", email: user.email, name: user.first_name + " " + user.last_name, "First Name": user.first_name, "Last Name": user.last_name, "Primary Chapter": user.chapter, "SpotMe_Id": user.spotme_id, };
And inside /sheet
we are logging req.body
but don’t see those attributes present in the contact
object.
Question:
Is there a specific method or configuration needed to ensure custom People attributes are reliably passed into the /sheet
payload for Canvas Apps?
Any tips from the Intercom team or community devs would be massively appreciated!
Thanks in advance!