I am trying to use Custom Objects to show the orders of a users that message us, either through email or whatsapp. I created the custom object Order with the relevant attributes. I then created an external reference in People and Conversations, referencing Order via a one to many relationship.
Then I created a webhook that triggers when a conversation is created or a reply is given. The webhook calls a service that posts to /custom_object_instances/Order
Now the documentation does not say anything about how to link the Order to People. Fin says, you need to put a customer property inside custom_attributes, fine we do that. But the Order reference in the sidebar doesn’t show anything. We put the customer outside custom_attributes, it still does not work.
What are we missing?
Best answer by Emilygav
Hey @EmmaLPA! Emily here from Support Engineering at Intercom 👋🏼
You’re extremely close — the only missing piece is the association step. Creating an Order custom object instance doesn’t automatically link it to a Person or Conversation. To make that connection, you need to update the Contact/Conversation and set the corresponding relationship attribute.
How it works (overview):
POST /custom_object_instances/{type} creates or updates the Order, but doesn’t attach it to anything.
Associations are made on the Contact or Conversation by updating their custom_attributes and setting the relationship attribute (its API name) to a list of custom object instances: { type, id }.
The Contacts and Conversations endpoints handle these associations.
Correct flow:
Create/update the Order instance as you’re already doing.
Retrieve its Intercom id (if you only have external_id).
PUT /contacts/{id} and set your People→Order relationship attribute to the list of Order instance(s).
Optionally, do the same for Conversations.
Once set, the Order will appear in the Inbox sidebar under that reference.
Why adding “customer” on the Order didn’t work:
The custom object instance endpoint doesn’t accept or create relationships - all linking must happen via the Contact/Conversation update endpoints.
Hey @EmmaLPA! Emily here from Support Engineering at Intercom 👋🏼
You’re extremely close — the only missing piece is the association step. Creating an Order custom object instance doesn’t automatically link it to a Person or Conversation. To make that connection, you need to update the Contact/Conversation and set the corresponding relationship attribute.
How it works (overview):
POST /custom_object_instances/{type} creates or updates the Order, but doesn’t attach it to anything.
Associations are made on the Contact or Conversation by updating their custom_attributes and setting the relationship attribute (its API name) to a list of custom object instances: { type, id }.
The Contacts and Conversations endpoints handle these associations.
Correct flow:
Create/update the Order instance as you’re already doing.
Retrieve its Intercom id (if you only have external_id).
PUT /contacts/{id} and set your People→Order relationship attribute to the list of Order instance(s).
Optionally, do the same for Conversations.
Once set, the Order will appear in the Inbox sidebar under that reference.
Why adding “customer” on the Order didn’t work:
The custom object instance endpoint doesn’t accept or create relationships - all linking must happen via the Contact/Conversation update endpoints.