# SnapEngage

<p><a href="https://snapengage.com/" >SnapEngage</a> is an enterprise chat platform. It offers chatbots and live chat integrations to drive conversions, reduce response times, and increase customer satisfaction.</p>
<p>RudderStack supports SnapEngage as a destination where you can seamlessly send your event data.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="connection-compatibility">Connection compatibility</h2>
  
  
  
  <div class="quick-info">
    <div>
      <div class="connection-modes-column-headers">
        <table>
          <tr class="connection-modes-column-headers">
            <th colspan="4">
            Destination Information
          </th>
        </tr>
          <tr class="destination-info-content">
            <td>
              <ul>
                <li>
                  <b>Status:</b> Generally Available 
                </li>
                <li>
                  <b>Supported sources:</b>  
                  
                      Web
                  
                </li>
                <li>
                  Refer to it as <b>SnapEngage</b> in the <a href="/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/filtering/#filtering-destinations">Integrations object</a>.
                </li>
              </ul>
            </td>
          </tr>
        </table>
      </div>
      <div class="table-content connection-modes-table">
        
          <table>
            <tr class="heading connection-modes-header">
              <th colspan="4">
              Connection Modes
              <a href=/docs/destinations/rudderstack-connection-modes>
                <i class="fa-regular fa-circle-info"></i>
              </a>
            </th>
          </tr>
            <tr class="connection-modes-column-headers">
              <th>Source</th>
              <th>Cloud mode</th>
              <th>Device mode</th>
              <th>Hybrid mode</th>
            </tr>
            
            <tr class="connection-modes-row">
              <td>
                Web
                
              </td>
              <td>
                 <img src=/docs/images/no-image.svg loading="lazy"
                    decoding="async" class="img__small" alt="not supported" />
              </td>
              <td>
                <img src=/docs/images/tick.svg loading="lazy" decoding="async" class="img__small" alt="supported" />
              </td>
              <td>
                 <img src=/docs/images/no-image.svg loading="lazy"
                    decoding="async" class="img__small" alt="not supported" />
              </td>
            </tr>
            
          </table>
         
      </div>
      <div class="table-content message-types-table">
          <table>
            <tr class="heading message-types-header">
              <th colspan="9">
              Supported Message Types
            </th>
          </tr>
          <tr class="message-types-column-headers">
            <th>Source</th>
            <th>Identify</th>
            <th>Page</th>
            <th>Track</th>
            <th>Screen</th>
            <th>Group</th>
            <th>Alias</th>
            <th>Record</th>
            <th>AudienceList</th>
          </tr>
          
          
          
            
              
              
          
          
          
            
              <tr class="heading message-mode-header">
                <th colspan="9">Device mode</th>
              </tr>
              
              <tr class="message-mode-row">
                <td>
                  0
                  
                </td>
                <td>
                  <img src=/docs/images/tick.svg loading="lazy" decoding="async" class="img__small" alt="supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
              </tr>
              
              <tr class="message-mode-row">
                <td>
                  1
                  
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                  <img src=/docs/images/tick.svg loading="lazy" decoding="async" class="img__small" alt="supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
                <td>
                   <img src=/docs/images/no-image.svg loading="lazy"
                      decoding="async" class="img__small" alt="not supported" />
                </td>
              </tr>
              
            
          
            </table>
        </div>
    </div>
  </div>
  

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text"><p>In the web device mode integration, that is, using <a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/" >JavaScript SDK</a> as a source, RudderStack loads the SnapEngage native SDK from the <code>https://storage.googleapis.com/</code> domain.</p>
<p>Based on your website&rsquo;s content security policy, you might need to <a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/load-js-sdk/#allowlist-destination-domain" >allowlist this domain</a> to load the SnapEngage SDK successfully.</p>
</div>
  </div>
</blockquote>

</html>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="get-started">Get started</h2><p>Once you have confirmed that the source platform supports sending events to SnapEngage, follow these steps:</p>
<ol>
<li>From your <a href="https://app.rudderstack.com/" >RudderStack dashboard</a>, add a source. Then, from the list of destinations, select <strong>SnapEngage</strong>.</li>
<li>Assign a name to the destination and click <strong>Continue</strong>.</li>
</ol>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="connection-settings">Connection settings</h2><p>To successfully configure SnapEngage as a destination, you will need to configure the following settings:</p>
<p>

<figure class="image--main "  >
    <a 
         href="/docs/images/event-stream-destinations/snapengage-connection-settings-1.webp"
        
        >
        <img src="/docs/images/event-stream-destinations/snapengage-connection-settings-1.webp" 
         alt="SnapEngage connection settings"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<figure class="image--main "  >
    <a 
         href="/docs/images/event-stream-destinations/snapengage-connection-settings-2.webp"
        
        >
        <img src="/docs/images/event-stream-destinations/snapengage-connection-settings-2.webp" 
         alt="SnapEngage connection settings"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

</p>
<ul>
<li><strong>Widget ID</strong>: Enter your SnapEngage widget ID.</li>
</ul>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">For more information on obtaining your SnapEngage widget ID, refer to the <a href="#faq" >FAQ</a> section below.</div>
  </div>
</blockquote>

</html>
<ul>
<li><strong>Record Live Chat Events</strong>: Enable this setting to allow RudderStack to automatically record your SnapEngage Live Chat events as <code>track</code> events.</li>
<li><strong>Update Event Name in track call</strong>: If <strong>Record Live Chat Events</strong> is enabled, enable this setting to update the event names in the <code>track</code> call.
<ul>
<li><strong>Mapping to update the Event Name in track call</strong>: Use this setting to map the standard SnapEngage events with your custom event names.</li>
</ul>
</li>
<li><strong>Client-side Events Filtering</strong>: This setting lets you specify which events should be blocked or allowed to flow through to SnapEngage.</li>
</ul>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">For more information on this setting, refer to the <a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/event-filtering/" >Client-side Events Filtering</a> guide.</div>
  </div>
</blockquote>

</html>
<ul>
<li><strong>Use device mode to send events</strong>: As this is a <a href="https://www.rudderstack.com/docs/destinations/rudderstack-connection-modes/#device-mode" >web device mode</a>-only destination, this setting is enabled by default and cannot be disabled.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="identify">Identify</h2><p>You can use the <a href="https://www.rudderstack.com/docs/event-spec/standard-events/identify/" ><code>identify</code></a> call to set the user&rsquo;s email and username in SnapEngage through their <a href="https://developer.snapengage.com/javascript-api/#javascript-api" >SDK</a>.</p>
<p>A sample <code>identify</code> call is shown below:</p>
<div class="rs-code">
  <div class="rs-code__head">javascript<button class="rs-code__copy" type="button">
      
      Copy
    </button>
  </div>
  <div class="highlight"><pre class="chroma"><code class="language-javascript" data-lang="javascript">rudderanalytics.identify(
  &#34;1hKOmRA4GRlm&#34;, {
    email: &#34;alex@example.com&#34;,
    name: &#34;Alex Keener&#34;
  }
);</code></pre></div>
</div>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="supported-mappings">Supported mappings</h3><p>The following table lists the mappings between the RudderStack and SnapEngage properties:</p>
<table>
  <thead>
      <tr>
          <th>RudderStack property</th>
          <th>SnapEngage property</th>
          <th>Data type</th>
          <th>Presence</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>traits.email</code> / <code>context.traits.email</code></td>
          <td><code>email</code></td>
          <td>String</td>
          <td>Required</td>
      </tr>
      <tr>
          <td><code>traits.name</code> / <code>context.traits.name</code></td>
          <td><code>name</code></td>
          <td>String</td>
          <td>Optional</td>
      </tr>
  </tbody>
</table>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="track">Track</h2><p>If you enable the <strong>Record Live Chat Events</strong> dashboard setting, RudderStack records the SnapEngage Live Chat events based on the user&rsquo;s interactions and sends them as <a href="https://www.rudderstack.com/docs/event-spec/standard-events/track/" >track</a> events. You can then view and analyze these events using other tools (connected to the same source in RudderStack).</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="supported-events">Supported events</h3><p>RudderStack automatically records and sends the following Live Chat events:</p>
<ul>
<li><a href="https://developer.snapengage.com/javascript-api/#startchat-event" >Live Chat Conversation Started</a></li>
</ul>
<div class="rs-code">
  <div class="rs-code__head">javascript<button class="rs-code__copy" type="button">
      
      Copy
    </button>
  </div>
  <div class="highlight"><pre class="chroma"><code class="language-javascript" data-lang="javascript">SnapEngage.setCallback(&#34;StartChat&#34;, function() {
  window.rudderanalytics.track(
    &#34;Live Chat Conversation Started&#34;, {}, {
      context: {
        integration: {
          name: &#39;snapengage&#39;,
          version: &#39;1.0.0&#39;
        }
      }
    }
  );
});</code></pre></div>
</div>
<ul>
<li><a href="https://developer.snapengage.com/javascript-api/#close-event" >Live Chat Conversation Ended</a></li>
</ul>
<div class="rs-code">
  <div class="rs-code__head">javascript<button class="rs-code__copy" type="button">
      
      Copy
    </button>
  </div>
  <div class="highlight"><pre class="chroma"><code class="language-javascript" data-lang="javascript">SnapEngage.setCallback(&#34;Close&#34;, function() {
  window.rudderanalytics.track(
    &#34;Live Chat Conversation Ended&#34;, {}, {
      context: {
        integration: {
          name: &#39;snapengage&#39;,
          version: &#39;1.0.0&#39;
        }
      }
    }
  );
});</code></pre></div>
</div>
<ul>
<li><a href="https://developer.snapengage.com/javascript-api/#chatmessagesent-event" >Live Chat Message Sent</a></li>
</ul>
<div class="rs-code">
  <div class="rs-code__head">javascript<button class="rs-code__copy" type="button">
      
      Copy
    </button>
  </div>
  <div class="highlight"><pre class="chroma"><code class="language-javascript" data-lang="javascript">SnapEngage.setCallback(&#34;ChatMessageSent&#34;, function() {
  window.rudderanalytics.track(
    &#34;Live Chat Message Sent&#34;, {}, {
      context: {
        integration: {
          name: &#39;snapengage&#39;,
          version: &#39;1.0.0&#39;
        }
      }
    }
  );
});</code></pre></div>
</div>
<ul>
<li><a href="https://developer.snapengage.com/javascript-api/#chatmessagereceived-event" >Live Chat Message Received</a></li>
</ul>
<div class="rs-code">
  <div class="rs-code__head">javascript<button class="rs-code__copy" type="button">
      
      Copy
    </button>
  </div>
  <div class="highlight"><pre class="chroma"><code class="language-javascript" data-lang="javascript">SnapEngage.setCallback(&#34;ChatMessageReceived&#34;, function(agent) {
  window.rudderanalytics.track(
    &#34;Live Chat Message Received&#34;, {
      agentUsername: agent
    }, {
      context: {
        integration: {
          name: &#39;snapengage&#39;,
          version: &#39;1.0.0&#39;
        }
      }
    }
  );
});</code></pre></div>
</div>
<ul>
<li><a href="https://developer.snapengage.com/javascript-api/#button-event" >Button Clicked</a></li>
</ul>
<div class="rs-code">
  <div class="rs-code__head">javascript<button class="rs-code__copy" type="button">
      
      Copy
    </button>
  </div>
  <div class="highlight"><pre class="chroma"><code class="language-javascript" data-lang="javascript">SnapEngage.setCallback(&#34;InlineButtonClicked&#34;, function() {
  window.rudderanalytics.track(
    &#34;Inline Button Clicked&#34;, {}, {
      context: {
        integration: {
          name: &#39;snapengage&#39;,
          version: &#39;1.0.0&#39;
        }
      }
    }
  );
});</code></pre></div>
</div>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="mapping-events">Mapping events</h3><p>You can also update the standard SnapEngage Live Chat events with custom event names. Enable the <strong>Update Event Name in track call</strong> dashboard setting in RudderStack and specify the required mapping:</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/event-stream-destinations/snapengage-event-mapping.webp"
        
        >
        <img src="/docs/images/event-stream-destinations/snapengage-event-mapping.webp" 
         alt="SnapEngage event name mapping"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<p>From the mappings set in the above image, RudderStack replaces the event names <code>&quot;Live Chat Conversation Started&quot;</code> and <code>&quot;Live Chat Message Sent&quot;</code>with <code>&quot;User Started Chat&quot;</code> and <code>&quot;Submit&quot;</code> respectively.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="faq">FAQ</h2><!-- end-chunk -->
<!-- begin-chunk -->
<h4 id="where-can-i-find-the-snapengage-widget-id">Where can I find the SnapEngage widget ID?</h4><p>To get your SnapEngage widget ID, follow these steps:</p>
<ol>
<li>Log into your <a href="https://www.snapengage.com/app/" >SnapEngage dashboard</a>.</li>
<li>In the sidebar, select the widget under <strong>Current Widget</strong> for which you want the widget ID.</li>
<li>Go to <strong>Settings</strong> &gt; <strong>Get the Code</strong>. You will find the widget ID under <strong>(Advanced) Widget ID</strong>:</li>
</ol>

<figure class="image--main "  >
    <a 
         href="/docs/images/event-stream-destinations/snapengage-widget-id.webp"
        
        >
        <img src="/docs/images/event-stream-destinations/snapengage-widget-id.webp" 
         alt="SnapEngage widget ID"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>


