Skip to main content

Installation Methods

CDN Script

Quickest setup - no build process

NPM Package

For modern frameworks and build tools
Perfect for static websites, WordPress, Shopify, or any HTML page. ###Step 1: Add Script Tag Add this code right before the closing </body> tag:
<script src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"></script>

Step 2: Initialize

<script>
  window.LuaPop.init({
    agentId: "your-agent-id",
    position: "bottom-right",
  });
</script>

Complete Example

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>My Website</title>
</head>
<body>
  <h1>Welcome to My Website</h1>
  <p>Your content here...</p>
  
  <!-- LuaPop Chat Widget -->
  <script src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"></script>
  <script>
    window.LuaPop.init({
      agentId: "your-agent-id",
      position: "bottom-right",
      buttonText: "Chat with AI"
    });
  </script>
</body>
</html>

NPM Installation

For React, Vue, Angular, or other modern frameworks.

Step 1: Install Package

npm install @lua/pop

Step 2: Import and Use

import { LuaPopWidget } from '@lua/pop';
import '@lua/pop/dist/style.css';

function App() {
  return (
    <div>
      {/* Your app content */}
      
      <LuaPopWidget 
        config={{
          agentId: "your-agent-id",
          position: "bottom-right",
          buttonText: "Chat with AI"
        }}
        apiUrl="https://api.heylua.ai"
        cdnUrl="https://cdn.heylua.ai"
        authUrl="https://auth.heylua.ai"
      />
    </div>
  );
}

Platform-Specific Installation

WordPress

1

Access Theme Editor

Go to AppearanceTheme File Editor
2

Edit footer.php

Find your theme’s footer.php file
3

Add Script

Add before </body>:
<script src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"></script>
<script>
  window.LuaPop.init({
    agentId: "<?php echo get_option('luapop_agent_id'); ?>",
    position: "bottom-right",
  });
</script>
Alternative: Use plugin like “Insert Headers and Footers” to add the script without editing theme files.

Shopify

1

Access Theme Editor

Go to Online StoreThemesEdit code
2

Edit theme.liquid

Find theme.liquid in Layout folder
3

Add Script

Add before </body>:
<script src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"></script>
<script>
  window.LuaPop.init({
    agentId: "your-agent-id",
    chatTitle: "Shop Assistant",
    buttonText: "🛍️ Shop Help",
    position: "bottom-right",
  });
</script>
4

Save and Test

Click Save and view your store

Wix

1

Add Custom Code

Go to SettingsCustom Code
2

Add to Body End

Click + Add Custom CodeBody - end
3

Paste Code

<script src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"></script>
<script>
  window.LuaPop.init({
    agentId: "your-agent-id",
    position: "bottom-right",
  });
</script>
4

Apply to All Pages

Select “All pages” and click Apply

Squarespace

1

Access Code Injection

Go to SettingsAdvancedCode Injection
2

Add to Footer

In the Footer section, add:
<script src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"></script>
<script>
  window.LuaPop.init({
    agentId: "your-agent-id",
    position: "bottom-right"
  });
</script>
3

Save

Click Save and your chat widget will appear on all pages

Webflow

1

Open Project Settings

Go to Project SettingsCustom Code
2

Add to Footer Code

Paste in Footer Code section:
<script src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"></script>
<script>
  window.LuaPop.init({
    agentId: "your-agent-id",
    position: "bottom-right"
  });
</script>
3

Publish

Publish your site to see the widget

Single Page Applications

React

// components/ChatWidget.tsx
import { useEffect } from 'react';

export default function ChatWidget() {
  useEffect(() => {
    // Load LuaPop script
    const script = document.createElement('script');
    script.src = 'https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js';
    script.onload = () => {
      window.LuaPop?.init({
        agentId: process.env.NEXT_PUBLIC_AGENT_ID,
        position: "bottom-right",
        sessionId: `user-${Date.now()}`
      });
    };
    document.body.appendChild(script);

    // Cleanup
    return () => {
      document.body.removeChild(script);
    };
  }, []);

  return null;
}

// In your main App component
import ChatWidget from './components/ChatWidget';

function App() {
  return (
    <div>
      {/* Your app */}
      <ChatWidget />
    </div>
  );
}

Next.js

// app/layout.tsx or pages/_app.tsx
import Script from 'next/script';

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        {children}
        
        {/* LuaPop Widget */}
        <Script 
          src="https://lua-ai-global.github.io/lua-pop/lua-pop.umd.js"
          strategy="lazyOnload"
          onLoad={() => {
            window.LuaPop?.init({
              agentId: process.env.NEXT_PUBLIC_AGENT_ID,
              position: "bottom-right"
            });
          }}
        />
      </body>
    </html>
  );
}

More Framework Examples

Vue, Angular, Svelte, and more

Verification

Check Installation

Open your website and verify:
1

Chat Button Appears

Look for the chat button in your chosen position
2

Button Opens Chat

Click the button - chat window should open
3

Chat Responds

Send a test message - AI should respond
4

No Console Errors

Check browser console (F12) - no errors should appear

Browser Console Check

// Type this in browser console to verify LuaPop loaded
console.log(window.LuaPop);
// Should show the LuaPop object

// Check current configuration
console.log(window.LuaPop.config);
// Should show your configuration

Environment Variables

For different environments, use environment variables:
# .env.local
NEXT_PUBLIC_AGENT_ID=your-agent-id
NEXT_PUBLIC_LUAPOP_ENV=production
window.LuaPop.init({
  agentId: process.env.NEXT_PUBLIC_AGENT_ID,
  environment: process.env.NEXT_PUBLIC_LUAPOP_ENV
});

Security Considerations

Never expose sensitive agent credentials in client-side code!

Best Practices

  • ✅ Use environment-specific agent IDs
  • ✅ Use staging environment for development
  • ✅ Generate unique session IDs per user
  • ✅ Don’t store user PII in runtimeContext
  • ✅ Use HTTPS on your website

Example Secure Setup

window.LuaPop.init({
  agentId: process.env.LUAPOP_AGENT_ID, // From environment
  environment: process.env.NODE_ENV === 'production' ? 'production' : 'staging',
  sessionId: generateSecureSessionId(), // Your session logic
  authToken: await getAuthToken() // If using authenticated users
});

Next Steps