> ## Documentation Index
> Fetch the complete documentation index at: https://franko.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom trigger

The **Custom Trigger** option lets you open a Franko modal from *any* element – button, link, navbar item, or even a JavaScript function.

***

## 1 · Copy your script

1. Navigate to your modal. In **Connect Tab → Custom Trigger** click **Copy**.
2. The snippet contains your modal slug and loads your feedback modal.

```html theme={null}
<script>
  … generated code …
</script>
```

***

## 2 · Paste before `</body>`

Add the snippet to every page where the trigger lives – preferably just before the closing `</body>` tag.

***

## 3 · Add your trigger

Any element can open the modal:

```html theme={null}
<button onclick="FrankoModal.open()">Give Feedback</button>
```

**Want to identify users?**<br /> Add the identity snippet before your trigger script. [Learn more about identity verification →](./identity-verification)

***

## Multiple modals

The Franko script is designed to manage one active modal configuration per page.

***

## Performance

**Script size and loading**: Each Franko script is less than 5kb and loads asynchronously, so it won't block your page rendering or slow down initial load times.

**Caching benefits**: Franko scripts are cached by the browser, so repeat visits load even faster.

**Best practices for optimal performance:**

**Mobile considerations**: Franko modals are responsive and optimized for mobile devices. The script size and loading pattern are identical across all devices.

***

## FAQ

**Will unused scripts hurt performance?**<br />
No – each script is less than 5kb and loads async.

**Does the script inject a bubble?**<br />
No. Custom Trigger stays invisible until you call `FrankoModal.open()`.

**Can I trigger it from my React/Vue app?**<br />
Yes – `FrankoModal.open()` works anywhere once the script loads.

**What's the difference between Custom Trigger and Embedded Chat Bubble?**<br />
Custom Trigger is for custom triggers - the modal stays completely invisible until you call `FrankoModal.open()`. Embedded Chat Bubble automatically injects a visible, floating chat bubble on your page.

Need help? Email **[fletcher@franko.ai](mailto:fletcher@franko.ai)**
