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

# Introduction

> Embed Tally forms, open popups, and react to form events from your own website.

Tally exposes a small JavaScript runtime — loaded from `https://tally.so/widgets/embed.js` —
that lets you render forms on your own pages, open them as popups, and listen to what
respondents do inside them.

## Integration methods

There are three ways to put a Tally form on your site. Pick the one that fits the experience
you want to build.

<CardGroup cols={3}>
  <Card title="Embeds" icon="code" href="/widgets/embeds">
    Render a form inline inside an `<iframe>` on any page of your site.
  </Card>

  <Card title="Popups" icon="window-restore" href="/widgets/popups">
    Open a form in a modal, triggered by your own JavaScript.
  </Card>

  <Card title="Code injection" icon="terminal" href="/widgets/code-injection">
    Run custom JavaScript inside a form hosted on your [custom domain](https://tally.so/help/custom-domains).
  </Card>
</CardGroup>

## Events

Every integration method emits the same set of [JavaScript events](/widgets/events) —
`Tally.FormLoaded`, `Tally.FormPageView`, `Tally.FormSubmitted`, and `Tally.PopupClosed` —
so you can react to what's happening inside the form from your own code.

## Examples

Looking for ready-to-paste code? The [examples](/widgets/examples/react) section covers
embedding in [React](/widgets/examples/react) and [Next.js](/widgets/examples/nextjs),
and [collecting a respondent's IP address](/widgets/examples/collect-ip-address) via code
injection.
