Get Started with Chat

Get rolling quickly with chat sessions between your customers and your agents.

Before You Begin

important: The legacy chat product is scheduled for retirement on February 14, 2026, and is in maintenance mode until then. During this phase, you can continue to use chat, but we no longer recommend that you implement new chat channels. To avoid service interruptions to your customers, migrate to Messaging for In-App and Web before that date. Messaging offers many of the chat features that you love plus asynchronous conversations that can be picked back up at any time. Learn about chat retirement in Help.

Before doing this tutorial, be sure that you’ve set up Service Cloud for Chat. See Org Setup for Chat in Lightning Experience with a Guided Flow for more information.

This tutorial shows you how to get Chat into your iOS app.

  1. Create an Xcode project. For this example, let’s make a Single View Application. Name it HelloChat.

    Single view application

    Hello chat setup

  2. Install the SDK as described in Install the Service Chat SDK for iOS.

  3. Go to your storyboard and place a button somewhere on the view. Name it Chat.

    Place button

  4. Add a Touch Up Inside action to your UIViewController implementation. Name it launchChat.

    Button action

    showSOS action

  5. Import the SDK. Wherever you intend to use the Chat SDK, be sure to import the ServiceCore framework and the ServiceChat framework.

    In Swift:

    import ServiceCore
    import ServiceChat
    

    In Objective-C:

    @import ServiceCore;
    @import ServiceChat;
    
  6. Launch a chat session from within the launchChat method.

    From the button action implementation, launch chat using the showChat(with:showPrechat:) method on SCSChatInterface.

    In Swift:

    @IBAction func launchChat(sender: AnyObject) {
    
      // Create configuration object
      if let config = SCSChatConfiguration(liveAgentPod: "YOUR_POD_NAME",
                                           orgId: "YOUR_ORG_ID",
                                           deploymentId: "YOUR_DEPLOYMENT_ID",
                                           buttonId: "YOUR_BUTTON_ID") {
    
        // Start the session
        ServiceCloud.shared().chatUI.showChat(with: config)
      }
    }
    

    In Objective-C:

    - (IBAction)launchChat:(id)sender {
    
      SCSChatConfiguration *config =
        [[SCSChatConfiguration alloc] initWithLiveAgentPod:@"YOUR_POD_NAME"
                                                     orgId:@"YOUR_ORG_ID"
                                              deploymentId:@"YOUR_DEPLOYMENT_ID"
                                                  buttonId:@"YOUR_BUTTON_ID"];
    
      // Start the session
      [[SCServiceCloud sharedInstance].chatUI showChatWithConfiguration:config];
    }
    

    Fill in the placeholder text for the Chat API endpoint, the org ID, the deployment ID, and the button ID.

    • Deployment ID

      • : The unique ID of your Chat deployment. To get this value, from Setup, select Chat | Deployments. The script at the bottom of the page contains a call to the liveagent.init function with the pod, the deploymentId, and orgId as arguments. Copy the deploymentId value.

        Deployment ID

        For instance, if the deployment code contains the following information:

        <script
          type="text/javascript"
          src="https://d.gla3.gus.salesforce.com/content/g/js/44.0/deployment.js"
        ></script>
        <script type="text/javascript">
          liveagent.init(
            "https://d.gla5.gus.salesforce.com/chat",
            "573B00000005KXz",
            "00DB00000003Rxz",
          );
        </script>
        

        The deployment ID value is:

        573B00000005KXz
        

        Be sure not to use the org ID value (which is also in this deployment code) for the deployment ID.

    • Button ID

      • : The unique button ID for your chat configuration. To get this value, from Setup, search for Chat Buttons and select Chat Buttons & Invitations. Copy the id for the button from the JavaScript snippet.

        Button ID

        For instance, if your chat button code contains the following information:

        <a
          id="liveagent_button_online_575C00000004h3m"
          href="javascript://Chat"
          style="display: none;"
          onclick="liveagent.startChat('575C00000004h3m')"
        >
          <!-- Online Chat Content -->
        </a>
        <div id="liveagent_button_offline_575C00000004h3m" style="display: none;">
          <!-- Offline Chat Content -->
        </div>
        <script type="text/javascript">
          if (!window._laq) {
            window._laq = [];
          }
          window._laq.push(function () {
            liveagent.showWhenOnline(
              "575C00000004h3m",
              document.getElementById("liveagent_button_online_575C00000004h3m"),
            );
            liveagent.showWhenOffline(
              "575C00000004h3m",
              document.getElementById("liveagent_button_offline_575C00000004h3m"),
            );
          });
        </script>
        

        The button ID value is:

        575C00000004h3m
        

        Be sure to omit the liveagent_button_online_ text from the ID when using it in the SDK.

  7. Launch Service Cloud Console. From the Omni-Channel widget, ensure that an agent is online.

    Omni-channel online

Now you can build and run the app. When you tap the Chat button, the app requests a chat session, which an agent can accept from the Service Cloud Console. From the console, an agent can real-time chat with a customer.

Chat publisher