# Oppy Welcome Kit: Website Embed Deep Dive

Published: 2026-03-20
Updated: 2026-03-24
Source: https://docs.oppy.pro/n/oppy-welcome-kit-website-embed-deep-dive
Account: Oppy Inc

---

# Website Embed Deep Dive

Everything you need to know about putting Oppy on your website — from basic installation to advanced contextual triggers, page-aware conversations, and creative interactive experiences.

---

## Basic Installation

### Step 1: Get Your Embed Code
Go to [app.oppy.pro](https://app.oppy.pro) → Your Oppy → **Share** tab → **Embed Widget**

### Step 2: Paste Before `&lt;/body&gt;`
```html
&lt;script type=&quot;text/javascript&quot;&gt;
  var embedKey = &#39;your-unique-embed-key&#39;;
  function handleOppyLoad() {
    if (typeof window.renderChatPopup === &quot;function&quot;) {
      window.renderChatPopup(embedKey);
    }
  }
  (function () {
    var oppy = document.createElement(&#39;script&#39;);
    oppy.src = &#39;https://e.oppy.pro//chat_popup.js&#39;;
    oppy.onload = handleOppyLoad;
    var s = document.getElementsByTagName(&#39;script&#39;)[0];
    s.parentNode.insertBefore(oppy, s);
  })();
&lt;/script&gt;
```

### What Appears
A floating chat icon in the bottom-right corner of your page. Clicking it opens the full chat interface with your Oppy&#39;s avatar, name, and any configured starter prompts.

### Where to Put It
- **Every page** — Same code works everywhere. The Oppy maintains context if the visitor navigates between pages.
- **WordPress** — Paste in Appearance → Theme Editor → footer.php, or use a &quot;Header/Footer Scripts&quot; plugin
- **Squarespace** — Settings → Advanced → Code Injection → Footer
- **Wix** — Settings → Custom Code → Body End
- **Webflow** — Project Settings → Custom Code → Footer Code
- **Shopify** — Online Store → Themes → Edit Code → theme.liquid before `&lt;/body&gt;`
- **Custom HTML** — Directly before `&lt;/body&gt;` on any page

---

## Starter Prompts (Floating Chips)

### What They Are
Clickable suggestion bubbles that appear above the chat icon before the visitor types anything. They reduce friction — visitors tap instead of thinking about what to type.

### Setting Them Up
Go to [app.oppy.pro](https://app.oppy.pro) → Your Oppy → **Share** tab → **Edit Page** → Add starter prompts

### The First 2-3 Show as Floating Chips
Only the first few prompts appear as visible chips on the page. Additional prompts show inside the chat window once opened.

### Starter Prompt Examples by Industry

**Real Estate:**
- &quot;I&#39;m looking to buy a home&quot;
- &quot;What&#39;s my home worth?&quot;
- &quot;Tell me about neighborhoods in [area]&quot;

**Mortgage/Lending:**
- &quot;What rates are available today?&quot;
- &quot;Help me get pre-qualified&quot;
- &quot;I want to refinance&quot;

**SaaS/Technology:**
- &quot;Show me a demo&quot;
- &quot;How does pricing work?&quot;
- &quot;I need help with my account&quot;

**Membership Organization:**
- &quot;What are the member benefits?&quot;
- &quot;How do I join?&quot;
- &quot;I&#39;m an existing member with a question&quot;

**Professional Services:**
- &quot;I need a consultation&quot;
- &quot;What services do you offer?&quot;
- &quot;Get a quote for my project&quot;

**E-Commerce:**
- &quot;Help me find the right product&quot;
- &quot;Track my order&quot;
- &quot;I have a question about returns&quot;

---

## Contextual Buttons (The Real Power)

### How They Work
Any button on your site can send a specific message to the Oppy when clicked:

```html
&lt;button onclick=&quot;updateChatWindow(&#39;Your message here&#39;)&quot;&gt;
  Button Label
&lt;/button&gt;
```

The chat opens, the message appears as if the visitor typed it, and the Oppy responds with full context.

### Why This Is Powerful
Instead of sending visitors to a generic form or FAQ page, the Oppy immediately knows **exactly what the visitor was looking at** and can have a targeted, relevant conversation.

---

## Contextual Button Examples by Page Type

### Property Listing Pages
```html
&lt;!-- On a listing detail page --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;Tell me more about the home at 742 Evergreen Terrace, listed for $485,000. 3 bed, 2 bath.&#39;)&quot;&gt;
  Ask About This Property
&lt;/button&gt;

&lt;button onclick=&quot;updateChatWindow(&#39;I want to schedule a showing for 742 Evergreen Terrace&#39;)&quot;&gt;
  Schedule a Showing
&lt;/button&gt;

&lt;button onclick=&quot;updateChatWindow(&#39;What comparable homes have sold near 742 Evergreen Terrace recently?&#39;)&quot;&gt;
  See Comparable Sales
&lt;/button&gt;
```

**What happens:** The Oppy can go search for the property, pull comps from the web, check calendar availability, and have an informed conversation — all from one button click.

### Product/Pricing Pages
```html
&lt;!-- On a pricing page --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I am looking at the Professional plan at $99/month. Can you help me understand if it is right for my business?&#39;)&quot;&gt;
  Is This Plan Right For Me?
&lt;/button&gt;

&lt;button onclick=&quot;updateChatWindow(&#39;I want to compare the Starter and Professional plans. My team has about 10 people.&#39;)&quot;&gt;
  Compare Plans
&lt;/button&gt;

&lt;button onclick=&quot;updateChatWindow(&#39;I am interested in enterprise pricing for a company with 500+ employees&#39;)&quot;&gt;
  Get Enterprise Pricing
&lt;/button&gt;
```

### Blog Posts / Content Pages
```html
&lt;!-- At the bottom of a blog post --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I just read your article about AI in real estate. I have questions about implementing this for my brokerage.&#39;)&quot;&gt;
  Discuss This Article
&lt;/button&gt;

&lt;!-- On a case study page --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I just read the case study about Example Lending Team. My company is similar — can we get similar results?&#39;)&quot;&gt;
  Can This Work For Me?
&lt;/button&gt;
```

### Service Pages
```html
&lt;!-- On a specific service page --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I am interested in your property management services for a 12-unit apartment building in Denver&#39;)&quot;&gt;
  Get a Quote
&lt;/button&gt;

&lt;button onclick=&quot;updateChatWindow(&#39;What is included in your full-service property management package?&#39;)&quot;&gt;
  Learn More About This Service
&lt;/button&gt;
```

### Contact / Demo Pages
```html
&lt;!-- Replace or supplement your demo form --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I would like to schedule a demo. I run a brokerage with about a mid-sized team.&#39;)&quot;&gt;
  Book a Demo
&lt;/button&gt;

&lt;button onclick=&quot;updateChatWindow(&#39;I have a quick question before I sign up&#39;)&quot;&gt;
  Quick Question
&lt;/button&gt;
```

### Event / Webinar Pages
```html
&lt;!-- On a webinar registration page --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I want to register for the March webinar on AI for loan officers&#39;)&quot;&gt;
  Register Now
&lt;/button&gt;

&lt;!-- Post-event --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I attended the webinar and want the free blueprint that was mentioned&#39;)&quot;&gt;
  Get the Free Blueprint
&lt;/button&gt;
```

### Support / Help Pages
```html
&lt;!-- On each help article --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I am on the help page about setting up tags but I still need help. Can you walk me through it?&#39;)&quot;&gt;
  Still Need Help?
&lt;/button&gt;

&lt;!-- On the main support page --&gt;
&lt;button onclick=&quot;updateChatWindow(&#39;I have a billing question about my account&#39;)&quot;&gt;
  Billing Help
&lt;/button&gt;

&lt;button onclick=&quot;updateChatWindow(&#39;Something is broken and I need technical support&#39;)&quot;&gt;
  Report an Issue
&lt;/button&gt;
```

---

## Hidden Context (Page-Aware Conversations)

### What It Is
You can silently send context to the Oppy as visitors navigate your site. This information is NOT visible in the chat — but the Oppy uses it to give better answers.

### Basic Page Tracking
```javascript
// On every page, tell the Oppy where the visitor is
document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
  if (typeof updateChatWindow === &#39;function&#39;) {
    updateChatWindow(&#39;User is viewing: &#39; + document.title + &#39; at &#39; + window.location.href);
  }
});
```

### Dynamic Property Data
```javascript
// On a listing page, send the listing details
var listingData = {
  address: &#39;742 Evergreen Terrace&#39;,
  price: &#39;$485,000&#39;,
  beds: 3,
  baths: 2,
  sqft: 1800,
  mls: &#39;MLS-12345&#39;
};
updateChatWindow(&#39;Visitor is viewing listing: &#39; + JSON.stringify(listingData));
```

### User State Context
```javascript
// After login, send user context
updateChatWindow(&#39;Logged-in user: &#39; + userName + &#39;, Plan: &#39; + userPlan + &#39;, Member since: &#39; + joinDate);
```

### Cart/Product Context (E-Commerce)
```javascript
// When items are added to cart
updateChatWindow(&#39;User added to cart: &#39; + productName + &#39; ($&#39; + price + &#39;). Cart total: $&#39; + cartTotal);
```

---

## Form-to-Chat Bridge

### Capture Form Data, Send to Oppy
Instead of (or in addition to) submitting a form normally, send the data to the Oppy for an instant conversation:

```html
&lt;form onsubmit=&quot;sendToOppy(event)&quot;&gt;
  &lt;input type=&quot;text&quot; id=&quot;name&quot; placeholder=&quot;Your Name&quot; required&gt;
  &lt;input type=&quot;email&quot; id=&quot;email&quot; placeholder=&quot;Email&quot; required&gt;
  &lt;input type=&quot;tel&quot; id=&quot;phone&quot; placeholder=&quot;Phone&quot;&gt;
  &lt;select id=&quot;interest&quot;&gt;
    &lt;option&gt;Buying a home&lt;/option&gt;
    &lt;option&gt;Selling my home&lt;/option&gt;
    &lt;option&gt;Both&lt;/option&gt;
  &lt;/select&gt;
  &lt;button type=&quot;submit&quot;&gt;Chat With Us&lt;/button&gt;
&lt;/form&gt;

&lt;script&gt;
function sendToOppy(e) {
  e.preventDefault();
  var name = document.getElementById(&#39;name&#39;).value;
  var email = document.getElementById(&#39;email&#39;).value;
  var phone = document.getElementById(&#39;phone&#39;).value;
  var interest = document.getElementById(&#39;interest&#39;).value;
  
  updateChatWindow(
    &#39;Hi! My name is &#39; + name + 
    &#39;. My email is &#39; + email + 
    (phone ? &#39; and my phone is &#39; + phone : &#39;&#39;) +
    &#39;. I am interested in: &#39; + interest
  );
}
&lt;/script&gt;
```

**What happens:** The form submits into the chat. The Oppy immediately has their name, email, phone, and interest — and starts a personalized conversation. This is how Example Realty built their brand kit generator.

---

## Multi-Button Layouts

### FAQ-Style Chat Triggers
```html
&lt;div class=&quot;faq-buttons&quot;&gt;
  &lt;h3&gt;Common Questions&lt;/h3&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;What neighborhoods do you serve?&#39;)&quot;&gt;
    What areas do you cover?
  &lt;/button&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;How much do your services cost?&#39;)&quot;&gt;
    What is your pricing?
  &lt;/button&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;How quickly can you start?&#39;)&quot;&gt;
    What is the timeline?
  &lt;/button&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;Do you offer a guarantee?&#39;)&quot;&gt;
    Do you guarantee results?
  &lt;/button&gt;
&lt;/div&gt;
```

### Category Navigation
```html
&lt;div class=&quot;service-selector&quot;&gt;
  &lt;h3&gt;What can we help with?&lt;/h3&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;I need help with residential real estate&#39;)&quot;&gt;
    🏠 Residential
  &lt;/button&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;I need help with commercial real estate&#39;)&quot;&gt;
    🏢 Commercial
  &lt;/button&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;I need property management services&#39;)&quot;&gt;
    🔑 Property Management
  &lt;/button&gt;
  &lt;button onclick=&quot;updateChatWindow(&#39;I am a real estate agent looking for tools&#39;)&quot;&gt;
    👤 I&#39;m an Agent
  &lt;/button&gt;
&lt;/div&gt;
```

---

## Advanced: Dynamic Button Generation

### Auto-Generate Buttons from Page Content
```javascript
// On a listings page, create a chat button for each listing
document.querySelectorAll(&#39;.listing-card&#39;).forEach(function(card) {
  var address = card.querySelector(&#39;.address&#39;).textContent;
  var price = card.querySelector(&#39;.price&#39;).textContent;
  var btn = document.createElement(&#39;button&#39;);
  btn.textContent = &#39;Ask about this home&#39;;
  btn.onclick = function() {
    updateChatWindow(&#39;Tell me about &#39; + address + &#39; listed at &#39; + price);
  };
  card.appendChild(btn);
});
```

### Timed Pop-Up Prompt
```javascript
// After 30 seconds on page, suggest starting a chat
setTimeout(function() {
  if (typeof updateChatWindow === &#39;function&#39;) {
    // This triggers the chat to open with a suggestion
    updateChatWindow(&#39;Visitor has been browsing for 30 seconds on the pricing page&#39;);
  }
}, 30000);
```

---

## Styling &amp; Customization

### Custom Colors
Pass brand colors during Oppy creation or via the API. The chat widget inherits:
- Primary color (buttons, links)
- Background color
- Text color

These are set in your Oppy&#39;s profile settings at [app.oppy.pro](https://app.oppy.pro).

### Z-Index Considerations
The embed widget uses a high z-index. If it conflicts with other elements:
```css
/* Adjust if the chat icon is hidden behind other elements */
.oppy-chat-widget { z-index: 99999 !important; }
```

---

## Prompt Configuration for Embed Visitors

Add this to your Oppy&#39;s prompt to handle website visitors well:

```
WEBSITE VISITOR HANDLING:
- Visitors from the website are browsing and may be early in their research
- Start friendly and helpful, not salesy
- If they clicked a contextual button, address that specific topic immediately
- If they ask about something on a different page, offer to help find it
- Collect their email/phone naturally during conversation (don&#39;t demand it upfront)
- If they seem qualified, offer to schedule a call or demo
- If they seem like they need support, help them or escalate to support team

Common visitor paths:
- Pricing page visitors → Help them choose the right plan
- Blog readers → Deepen engagement, offer related resources
- Listing page visitors → Answer property questions, offer showings
- Support page visitors → Resolve their issue using knowledge base
```

---

## Measuring Embed Performance

Track how the embed is performing:
- **Conversations tagged `website_chat`** — filter in [app.oppy.pro](https://app.oppy.pro) conversations
- **Engagement rate** — how many visitors open the chat
- **Qualification rate** — how many web chats result in qualified leads
- **Pages with most engagement** — check which contextual buttons get clicked most

Ask the concierge: *&quot;Show me all website_chat conversations from the last 30 days. Which pages generated the most engagement?&quot;*

---

**[Back to Master Guide](https://app.oppy.pro/n/oppy-welcome-kit-master-guide)**
