Below are some of the most commonly asked questions related to our Channels API. If you have any additional questions, please reach out to us on the Front Community.

Should I be using the Channel API (Application Channels) or a custom channel or both?
Please refer to "Custom Channels vs Application Channels?".

Do you have sample code I can reference when building a channel integration?
Yes! Refer to Getting Started with Application Channels for a tutorial that includes a working sample application on GitHub. Note that this project applies to Application Channels but not Custom Channels.

How does Front communicate which user sent the message to my system?
The only information provided is the user's contact in Front. Our recommendation is to either 1) define a mapping from Front contact to the user in your system, or 2) match the user's Front contact to that in your system. If no match is present, a default should be assumed.

How does Front determine how messages will thread for my channel? When would I want to thread messages separately?
How messages thread is up to you! If you are using a custom channel, see the section on threading here. If you are building an application channel with the Channel API, see the section on threading here.

Threading is useful because it allows you to define which messages are grouped together in the same conversation in Front. Separate conversations can be assigned to different team members, tagged separately, and counted as independently in analytics. Some common threading strategies are to thread by an external user ID or email address (in which case all messages with the same user will thread into the same conversation) or thread by a unique identifier that resets every 24 hours (so that a user who submits messages on Monday and Wednesday will result in two separate conversations).

What is the difference between the external_id and the external_conversation_id?
Note: This is only relevant to Application Channels.

One affects the threading of the conversation while the other does not. The external_conversation_id dictates how the message will thread when you import it to Front (see above for examples). The external_id on the other hand has no impact on threading in Front and should simply reflect the unique corresponding message-id value from your opposing system. For example, let's say you were building a custom chat channel in Front and your customer Jim ([email protected]) sends you a response that you need to import to Front. When your backend system receives the message from Jim it assigns it a random string of ZWW8lX27gZdUDO0uctFG. When you call the Sync inbound message endpoint, you might set the external_id value to ZWW8lX27gZdUDO0uctFG to match your backend and the external_conversation_id to [email protected] so that everything Jim always threads to the same conversation in Front.

How will I know which user in Front sent an outbound message on the channel?
When a message is composed in Front, you'll receive a webhook from us to the webhook URL you define containing things like the message_id and conversation_id, but you'll also receive information about the author of the message in Front on the author object. Things like the Teammate ID, email, username, and name will all be contained in that object. The author reflects who physically hit send on the message in Front.

I've built a great channel many customers of Front would want. How do I make it usable by all Front customers? How do I get it into the app directory?
Follow the directions for publishing your app and we'll work with you to offer this as a channel for all Front customers.